Android EventBus - 接收消息的顺序
Android EventBus - Sequence for receiving message
我在我的应用程序中使用了 EventBus,我有一个问题是它将如何执行?
我已经在应用程序中注册了接收器,activity 和片段
我想要的应用程序:
在应用程序class中接收消息并进行一些修改,然后将其发送到片段或activity
现在我的问题是:
- eventbus是否有特定的顺序接收消息?像:片段 -> activity -> 应用程序
- 如果有那么它将以什么顺序执行?
a : 片段 -> activity -> 应用程序
b:应用程序 -> 片段 -> activity
c : 随机
- 最后,我如何在应用程序中接收消息,然后使用相同的 messageEvent 模型 class
发送到片段或 activity
EventBus
确实有传递顺序,但默认情况下没有,在订阅 EventBus
时,您可以使用 @Subscribe(priority = 0)
设置 priority
,更高优先级的订阅者将收到消息优先,它们在同一线程策略上。但是订阅者是任何传输的终点,这意味着对一个订阅者中的数据所做的修改不会自动发送到另一个订阅者。
要实现您的需要,您只能将主要订阅者注册为 Application
,然后转换数据并使用 Fragment/Activity 将订阅的不同参数再次广播它。
class App: Application(){
@Subscribe(threadMode = ThreadMode.MAIN)
void onOriginalData(OriginalData data){
//do transformations on data and send transformedData to Activity/Fragment
}
}
class Activity: AppCompatActivity {
@Subscribe(threadMode = ThreadMode.MAIN)
void onTransformedData (TransformedData data){
}
}
我在我的应用程序中使用了 EventBus,我有一个问题是它将如何执行?
我已经在应用程序中注册了接收器,activity 和片段
我想要的应用程序:
在应用程序class中接收消息并进行一些修改,然后将其发送到片段或activity
现在我的问题是:
- eventbus是否有特定的顺序接收消息?像:片段 -> activity -> 应用程序
- 如果有那么它将以什么顺序执行? a : 片段 -> activity -> 应用程序 b:应用程序 -> 片段 -> activity c : 随机
- 最后,我如何在应用程序中接收消息,然后使用相同的 messageEvent 模型 class 发送到片段或 activity
EventBus
确实有传递顺序,但默认情况下没有,在订阅 EventBus
时,您可以使用 @Subscribe(priority = 0)
设置 priority
,更高优先级的订阅者将收到消息优先,它们在同一线程策略上。但是订阅者是任何传输的终点,这意味着对一个订阅者中的数据所做的修改不会自动发送到另一个订阅者。
要实现您的需要,您只能将主要订阅者注册为 Application
,然后转换数据并使用 Fragment/Activity 将订阅的不同参数再次广播它。
class App: Application(){
@Subscribe(threadMode = ThreadMode.MAIN)
void onOriginalData(OriginalData data){
//do transformations on data and send transformedData to Activity/Fragment
}
}
class Activity: AppCompatActivity {
@Subscribe(threadMode = ThreadMode.MAIN)
void onTransformedData (TransformedData data){
}
}