所以,我想使用GreenRobots网站上提到的以下功能,
EventBus可以为您处理线程:事件可以发布在与发布线程不同的线程中。一个常见的用例是处理UI更改。在Android中,UI更改必须在UI(主)线程中完成。另一方面,网络或任何耗时的任务不得在主线程上运行。
我想要做的是,在我的Android应用程序中,我想创建一个事件来处理我的所有网络任务(从服务器发送和接收数据)。
我如何做到这一点?
我应该在事件POJO中进行网络呼叫,然后使用OnEvent来发布网络呼叫任务。(我不认为这是正确的还是它?)
编辑:使用事件总线进行线程化可能不是最佳选择,因为所有OnEvent调用将一个接一个地同步运行,这可能会导致阻塞总线,也不会意味着阻塞总线。但下面的答案是,如果满足要求,可以采取的方式。
答案 0 :(得分:0)
我建议使用可能不需要事件总线的架构。事件总线仍然有用,我认为您可以在getting started guide中找到您要查找的内容。
一些示例代码:
public class EventBusExample extends Activity {
@Override protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
EventBus.getDefault().post(new BackgroundWorkEvent());
}
@Override protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.ASYNC)
public void doBackgroundWork(BackgroundWorkEvent event) {
// do background work here
// when finished, post to ui thread
EventBus.getDefault().post(new UiWorkEvent());
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void doUiWork(UiWorkEvent event) {
// on main thread. do ui stuff
}
public static class BackgroundWorkEvent {
}
public static class UiWorkEvent {
}
}