EventBus 详细使用教程[在Activity、Service、Receiver中Post]

来源:互联网 发布:ios刷机会丢失数据吗 编辑:程序博客网 时间:2024/06/16 21:26

添加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消息

1.在子线程中给Activity发消息更新UI

class MyThread extends Thread{        @Override        public void run() {            //发送消息            EventBus.getDefault().post(new MessageEvent("这是EventBus发送的消息更新UI"));        }    };

2.在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的消息"));        }    }}

3.在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发送消息"));        }    }}

github地址 | 欢迎Star

2 0
原创粉丝点击