在项目里用到了EventBus,EventBus对于项目解耦有很大的帮助,只是用的时候每次在Activtiy中先Register然后再取消,比较麻烦,写了大量的重复代码,试着写进BaseActivty里,就好多了。
BaseActivty
@Override protected void onStart() { super.onStart(); EventUtil.register(this); } @Override protected void onDestroy() { super.onDestroy(); EventUtil.unregister(this); } public void onEvent(Object obj) { }public void onEventMainThread(Object obj) { }
EventUtil只是对EventBus进行了简单的封装:
/** * Created by qianjin on 2015/10/12. */ public class EventUtil { public static void register(Object context){ if (!EventBus.getDefault().isRegistered(context)) { EventBus.getDefault().register(context); } } public static void unregister(Object context){ if (EventBus.getDefault().isRegistered(context)) { EventBus.getDefault().unregister(context); } } public static void sendEvent(Object object){ EventBus.getDefault().post(object); } }
在使用的Activty和Fragment中,只需要重写onEvent(Object obj) 或onEventMainThread(Object obj) 就行了,当然,你重写的时候改了Object,@Override会报错,把@Override去掉就行了,我们只是需要保证方法名是onEvent和onEventMainThread这样的名字就行。
最近对AndroidBase写了点代码,完整的可以看我github地址。