我已经Otto在我最新的Android项目中尝试过,它确实简化了对象之间的通信.但是,我不确定Threads与它之间的通信是否存在任何隐藏的问题.
这就是我所做的,创建了一个SingletonBus使用,enum以便可以在任何地方访问总线:
public enum SingletonBus {
INSTANCE;
private static String TAG = SingletonBus.class.getSimpleName();
private Bus bus;
private boolean paused;
private final Vector<Object> eventQueueBuffer = new Vector<>();
private Handler handler = new Handler(Looper.getMainLooper());
private SingletonBus() {
this.bus = new Bus(ThreadEnforcer.ANY);
}
public <T> void postToSameThread(final T event) {
bus.post(event);
}
public <T> void postToMainThread(final T event) {
try {
if(paused) {
eventQueueBuffer.add(event);
} else {
handler.post(new Runnable() {
@Override
public void run() {
try { …Run Code Online (Sandbox Code Playgroud)