EventBus的四种线程模式

1、四种模式分别是:POSTING、MAIN、BACKGROUND、ASYNC。如果是想更新UI就使用MAIN模式,如果要进行耗时操作最好是使用ASYNC,因为这个模式能永远保证在不一样的线程中进行操作,而且都是子线程。

(1)POSTING:这种模式就是eventBus默认的模式,我们在使用的时候不需要再订阅者的方法的注解后面加任何东西(选择模式),但是这种只能在同一个线程中接收,也就是说,如果是在主线程中发布消息就只能在主线程中接收消息,如果是在子线程中,那么也只能在相同的子线程中去接收消息。如果非要声明POSTING的话,写法如下:

@Subscribe(threadMode = ThreadMode.POSTING)
    public void showMsgFromSecondActivity(MessagePojo msg){
        Log.i("test", ((String) msg.obj));
    }
(2)MAIN:这种模式保证了订阅者指定的那个接收方法肯定要主线程中执行,可以放心的在里面执行更新UI操作。无论发布者是在主线程中还是在那一条子线程中发布消息,这边接收的都在主线程中。写法如下

@Subscribe(threadMode = ThreadMode.MAIN)
    public void showMsgFromSecondActivity(MessagePojo msg){
        Log.i("test", ((String) msg.obj));
    }

(3)BACKGROUND:这种模式无论发布者是在主线程或者是那一条子线程中发布消息,接收的肯定是在子线程中,并且是这样理解:如果是在主线程中发布消息,那么就会随机开辟一条子线程来接收消息。如果是在子线程中发布消息,那么就会在相同的子线程来接收消息。写法如下:

@Subscribe(threadMode = ThreadMode.BACKGROUDN)
    public void showMsgFromSecondActivity(MessagePojo msg){
        Log.i("test", ((String) msg.obj));
    }

(4)ASYNC:这种模式是无论你在那个线程中发布消息都会在不同的线程中接受消息。如果你在主线程中发布消息,就会随机的开辟一条子线程来接收消息;如果是在子线程中发布消息,就会开辟一条不同的子线程来接收消息。

写法如下:

@Subscribe(threadMode = ThreadMode.ASYNC)
    public void showMsgFromSecondActivity(MessagePojo msg){
        Log.i("test", ((String) msg.obj));
    }

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值