android - 如何使用 Otto 事件总线将事件从服务发送到 Activity ?

标签 android otto

简单的BusProvider.getInstance().post() 带来的异常不是主线程。 如何使用 Otto 事件总线将事件从 Service 发送到 Activity?

最佳答案

要从任何线程(主线程或后台)发帖并在主线程上接收,请尝试类似

public class MainThreadBus extends Bus {
  private final Handler mHandler = new Handler(Looper.getMainLooper());

  @Override
  public void post(final Object event) {
    if (Looper.myLooper() == Looper.getMainLooper()) {
      super.post(event);
    } else {
      mHandler.post(new Runnable() {
        @Override
        public void run() {
          MainThreadBus.super.post(event);
        }
      });
    }
  }
}

注意:感谢 Jake Wharton 和 https://github.com/square/otto/issues/38 上的“pommedeterresaute”。对于一般方法。我只是用包装类而不是子类来实现它。

关于android - 如何使用 Otto 事件总线将事件从服务发送到 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431768/

相关文章:

android - 需要实现签名抓取

android - 如何以更通用的方式将 SharedPreferences 用作 LocalStore?

android - 为什么 ButterKnife 不能绑定(bind)私有(private)内部类中的字段?

android - 如何将 Dalvik 字节码转换为 LLVM IR?

java - 从 Dagger 图中获取带有 Qualifier 注释的对象

android - 奥托 - 制作与发布

android - 如何从Android App以编程方式将视频上传到Youtube

android - 哪种 Activity 生命周期方法最适合注册/取消注册到事件总线?

android - Otto(事件总线),将事件 fragment 发送到 fragment 但不接收

android - 注销 fragment 时 OTTO 中的 IllegalArgumentException