1、添加EventBus
compile
'de.greenrobot:eventbus:2.4.0'
或下载相关对应的jar包
2、注册和注销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注销"
);
}
3、自定义消息类型
public class MessageEvent {
public String message;
public MessageEvent(String message){
this.message = message;
}
}
4、post在Activity中的子线程中发送消息更新UI
Thread thread = new Thread(new Runnable){
@Override
public run(){
EventBus.getDefault.post(new Message("只是EventBus在子线程中发送过来的消息"));
}
}
5.在Service中发消息给Activity更新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的消息"));
}
}
}
6.在Receiver中发送消息给Activity更新UI
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发送消息"));
}
}
}