Square的奥托和线程

时间:2014-06-08 21:29:47

标签: android multithreading otto

我有一个奥托问题。我有一个Runnable线程,我启动。它进行一些处理并将结果作为事件发布在总线上。

在Runnable类中,通过调用此类的getInstance来检索总线:

public final class BusProvider {
    private static final Bus BUS = new Bus(ThreadEnforcer.MAIN);

    public static Bus getInstance() {
        return BUS;
    }

    private BusProvider() {
        // No instances.
    }
}

稍后,Activity使用相同的方法:BusProvider.getInstance()来访问总线并注册任何事件。但是,永远不会调用@Subscribe方法:

@Subscribe
public void onGeoCodePosition(GeoCodePosition geoCodePosition) {
    .....
}

我的假设是即使我强迫总线在特定的线程上,即。 ThreadEnforcer.MAIN,因为我正在运行Runnable上的一个新线程,之后我在Activity中没有收到任何事件的原因是在一个线程上发布并且在另一个线程上进行侦听,因此不起作用?

1 个答案:

答案 0 :(得分:0)

您应该使用ThreadEnforcer.ANY