添加EventBus
compile ‘de.greenrobot:eventbus:2.4.0‘
或
直接下载jar包 |点击下载
注册和注销EventBus
@Override
protected void onStart() {
super.onStart();
//注册EventBus
EventBus.getDefault().register(this);
Logger.e("EventBus注册");
}
@Override
protected void onStop() {
super.onStop();
//注销EventBus
EventBus.getDefault().unregister(this);
Logger.e("EventBus注销");
}
自定义消息类型
public class MessageEvent {
public String message;
public MessageEvent(String message){
this.message=message;
}
}
创建消息接受
//接受消息的地方(在Android的UI线程中)
public void onEventMainThread(MessageEvent event) {
Logger.e("onEventMainThread"+event.message);
tv_demo.setText(event.message);
}
Post消息
class MyThread extends Thread{
@Override
public void run() {
//发送消息
EventBus.getDefault().post(new MessageEvent("这是EventBus发送的消息更新UI"));
}
};
public class MyService extends Service {
public static final String ACTION_START="ACTION_START";
@Override
public IBinder onBind(Intent intent) {
return new Binder();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(ACTION_START.equals(intent.getAction())){
new MyServerThread().start();
}
return super.onStartCommand(intent, flags, startId);
}
class MyServerThread extends Thread{
@Override
public void run() {
EventBus.getDefault().post(new MessageEvent("这是在MyService的MyServerThread线程中Post的消息"));
}
}
}
public class MyBroadcastReceiver extends BroadcastReceiver{
public static final String ACTION_SEND="ACTION_SEND";
@Override
public void onReceive(Context context, Intent intent) {
if (ACTION_SEND.equals(intent.getAction())){
EventBus.getDefault().post(new MessageEvent("这是在[广播]中给Activity发送消息"));
}
}
}
github地址 | 欢迎Star
EventBus 详细使用教程[在Activity、Service、Receiver中Post]
原文地址:http://blog.csdn.net/yy1300326388/article/details/45916871