举例讲解Android应用开发中OTTO框架的基本使用

2019-12-10 19:05:20王冬梅

实例说明
本文以短信服务接受为例,介绍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注册哦。