我是靠谱客的博主 自由香氛,最近开发中收集的这篇文章主要介绍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));

}

最后

以上就是自由香氛为你收集整理的EventBus四种线程交付模式的全部内容,希望文章能够帮你解决EventBus四种线程交付模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部