实例说明
本文以短信服务接受为例,介绍OTTO的使用
1. 构造单例模式
BUS是一个单例,所以我们要创建一个单例模式,而最简单的单例当然是在Application中建立,记得在Manifest注册哦。
/**
* Created by leon on 15/5/27.
* 主线程事件总线,方便在异步任务中回掉
*/
public class MainThreadBus extends Bus {
private final Handler handler = new Handler(Looper.getMainLooper());
@Override public void post(final Object event) {
if (Looper.myLooper() == Looper.getMainLooper()) {
//直接通过反射调用
super.post(event);
} else {
//通过handler把异步任务发送到UI线程,然后再反射调用
handler.post(new Runnable() {
@Override
public void run() {
MainThreadBus.super.post(event);
}
});
}
}
}
接着是Application的重写
public class GlobalContext extends Application {
//event bus singleton
public static final MainThreadBus bus = new MainThreadBus();
public static GlobalContext instance;
@Override public void onCreate() {
super.onCreate();
instance = this;
}
public static MainThreadBus getBusInstance(){
return bus;
}
public static GlobalContext getContextInstance(){
return instance;
}
}
2. 发送者(Publisher)
现在我们要注册一个短信接收机器,为了与国内毒瘤软件抢占第一的短信监听,我们使用Service动态注册接收器,以抢占第一优先级。
建立一个常驻后台的服务,动态注册接收器,以抢占第一优先级。同样记得要把Service在Manifest注册哦。










