Otto Android事件总线实战
Otto 的事件总线在 Android 里算是老牌选手了。Square 出品,用起来还是蛮顺手的,是在搞组件间通信时——不用传 handler,不用定义接口,逻辑清爽不少。发布订阅的那套思路,跟前端搞事件监听其实挺像,理解起来没太大门槛。
事件总线的好处是啥?最直接的就是解耦,Activity、Service、Fragment 之间不用互相认识,发个事件,谁爱听谁,谁不感兴趣就不,结构清晰,扩展性也强。
安装 Otto 也简单,Gradle 里加一行依赖就能用:
implementation 'com.squareup:otto:1.3.8'
初始化 Bus 实例最好放在Application
类里,全局一个就够:
public class MyApp extends Application {
public static final Bus BUS = new Bus();
}
事件类一般写得比较轻,没啥逻辑,就是个数据载体。用@Subscribe
订阅,用BUS.post(new Event())
发布,响应也快,代码也简单。
要注意注册和注销,像 Activity 里的话,最好在onCreate()
注册,在onDestroy()
注销,避免内存泄漏:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyApp.BUS.register(this);
}
除了 UI 通信,像数据库更新、网络回调通知这些场景,Otto 也都挺适合用的。你还可以参考一下 Otto 事件总线的类间通信,讲得也挺细。
OttoDemo 项目里,把这些用法都串起来了:事件类怎么写、在哪注册、啥时候发消息,流程跑一遍,基本上就掌握了。推荐你 clone 下来跑一跑,体会一下它的思路。
如果你项目里组件比较多,通信逻辑绕得头大,不妨试试 Otto。轻量、易上手,尤其在老一点的项目中,还挺实用的。
22.88MB
文件大小:
评论区