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

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



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值