EventBus下载地址:https://github.com/greenrobot/EventBus

MyEvent:

 package com.zzw.testeventbus;

 public class MyEvent {
public int id;
public String content; public MyEvent() {
super(); } @Override
public String toString() {
return "MyEvent [id=" + id + ", content=" + content + "]";
} }

MyEvent

MainActivity:

 package com.zzw.testeventbus;

 import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import de.greenrobot.event.EventBus; public class MainActivity extends Activity {
TextView tv;
public static final String TAG = "MainActivity"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv); EventBus.getDefault().register(this); findViewById(R.id.bt).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, EventService.class);
startService(intent);
}
});
}
// Main线程,这个与Android UI线程密切相关,可以在里面设置UI值,不要阻塞它!
public void onEventMainThread(MyEvent event) {
Log.d(TAG + "--" + "onEventMainThread", event.toString());
tv.setText(event.content);
int id = event.id % 3;
if (id == 0) {
tv.setTextColor(Color.RED);
} else if (id == 1) {
tv.setTextColor(Color.GREEN);
} else if (id == 2) {
tv.setTextColor(Color.BLUE);
}
} // 后台线程中接收处理
public void onEventBackgroundThread(MyEvent event) {
Log.e(TAG + "--" + "onEventBackgroundThread", event.toString());
} // 异步线程中接收处理
public void onEventAsync(MyEvent event) {
Log.i(TAG + "--" + "onEventAsync", event.toString());
} @Override
protected void onDestroy() {
EventBus.getDefault().unregister(this);
}
}

EventService:

 package com.zzw.testeventbus;

 import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
import de.greenrobot.event.EventBus; public class EventService extends Service { @Override
public void onCreate() { super.onCreate();
} private void task() {
new Thread(new Runnable() { @Override
public void run() {
for (int i = 1; i <= 100; i++) {
MyEvent event = new MyEvent();
event.id = i;
event.content = "傻逼" + i;
EventBus.getDefault().post(event);
SystemClock.sleep(1000);
}
}
}).start();
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
task();
return super.onStartCommand(intent, flags, startId);
} @Override
public void onDestroy() {
super.onDestroy();
} @Override
public IBinder onBind(Intent intent) {
return null;
} }

传递消息--第三方开源--EventBus的简单使用的更多相关文章

  1. Android消息通信 第三方开源项目EventBus 的用法

    EventBus是github上的一个第三方开发库,其在github上的项目主页地址:https://github.com/greenrobot/EventBus EventBus的消息模型是消息发布 ...

  2. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  3. 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善

    链接地址:http://www.tuicool.com/articles/jyA3MrU 时间 2015-01-05 10:08:18  我是程序猿,我为自己代言 原文  http://blog.cs ...

  4. Android之史上最全最简单最有用的第三方开源库收集整理

    Android开源库 自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 . 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者, ...

  5. Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog)

    Android第三方开源对话消息提示框:SweetAlertDialog(sweet-alert-dialog) Android第三方开源对话消息提示框:SweetAlertDialog(sweet- ...

  6. QQ消息99+形成--第三方开源--BezierView

    Android第三方开源的BezierView实现了上述QQ的99+条未读消息气泡显示.Android开源BezierView在github上的项目主页是:https://github.com/che ...

  7. GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    若有任何疑问可通过邮件或微博联系我 项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开 ...

  8. 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...

  9. EventBus的简单使用与原理

    一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间 ...

随机推荐

  1. VS2015发布Webservice

    第一步:开启IIs:在控制面板程序——>程序功能——>打开或关闭windows功能,把“Internet信息服务”下面的“FTP服务器”.“Web管理工具”.“万维网服务”全部勾上,然后点 ...

  2. 关于android初学者必须掌握的Activity的四大知识点

    这几天一直都在捣鼓android的知识点,兴趣班的老师,讲课太过深奥,天(想到什么就见什么,后后面完全不想听),最后自己找资料总结了在Android学习中很重要的一个组件Activity,那就开始吧! ...

  3. rabbitmq-server启动不了,安装erlang,安装rabbitmq-server

    sudo rabbitmq-server start,虽然现实success,但是查看状态,sudo rabbitmq-server status发现居然没有启动,报错是不是端口占用(查看日志/var ...

  4. HTTPS(SSL/TLS) 原理之深入浅出

    注:本文参考自网络上的多篇HTTPS相关文章,本人根据自己的理解,进行一些修改,综合. 1. 必要的加密解密基础知识 1)对称加密算法:就是加密和解密使用同一个密钥的加密算法.因为加密方和解密方使用的 ...

  5. 使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法

            Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL , ...

  6. oracle 创建字段自增长——两种实现方式汇总

    mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而oracle却没有这样的功能,我们有以下两种方式可以解决字段自增长的功能. 因为两种方式都需要通过创建序列来实现,这里先给出序列的创建 ...

  7. Android中的Shape使用总结

    参考:http://www.cnblogs.com/gzggyy/archive/2013/05/17/3083218.html 在Android程序开发中,我们经常会去用到Shape这个东西去定义各 ...

  8. jdk环境搭建

    win7+jdk环境变量配置 进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置:1.下载jdk(http://java.sun.com/javase/downloads/inde ...

  9. C++ sort函数

    (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于 ...

  10. loop指令

    loop系列的指令有:loop,loope/loopz,loopne/loopnz,它们都是借助于ECX寄存器作为计数来实现循环,每轮循环先ecx自动减1,再来判断ecx值,ecx的自减不会影响OF和 ...