【Android】EventBus使用相关
16lz
2021-01-23
【Android】EventBus使用相关
EventBus的使用非常简单,主要使用到以下三个方法:
//注册EventBus EventBus.getDefault().register(Object subscriber); //准备事件处理方法 @Subscribe public void onEventXXX(Object event){ //处理逻辑 ... } //发送消息 EventBus.getDefault().post(Object event); //注销EventBus EventBus.getDefault().unregister(Object subscriber);
注意在使用:
创建一个EventManager’管理类,在EventManager中判断需要注册事件的类中是否有相关的订阅方法
public static boolean isBindEventBus(Class clazz) { Method[] ms = clazz.getDeclaredMethods(); for (Method m : ms) { if (m.isAnnotationPresent(Subscribe.class)) { return true; } } return false;}
管理类代码:
public class EventManager { private static EventManager sInstance = new EventManager(); private static EventBus mEventBus; private EventManager() { mEventBus = new CustomEventBus(); } public static EventManager getsInstance() { return sInstance; } public void post(Object event) { mEventBus.post(event); } public void postSticky(Object event) { mEventBus.postSticky(event); } public void register(Object event) { mEventBus.register(event); } public void unRegister(Object event) { mEventBus.unregister(event); } /** * 判断需要注册事件的类中是否有相关的订阅方法 * * @param clazz * @return */ public static boolean isBindEventBus(Class clazz) { Method[] ms = clazz.getDeclaredMethods(); for (Method m : ms) { if (m.isAnnotationPresent(Subscribe.class)) { return true; } } return false; } static final class CustomEventBus extends EventBus { @Override public void register(Object subscriber) { if (!isRegistered(subscriber)) { super.register(subscriber); } } }}
更多相关文章
- Android httpClient Get&Post方法
- Android 给textview添加下划线的一种方法(可复用)
- Android中两种实现倒计时的方法
- Android获取系统内核版本的方法
- Android Studio执行Java类的main方法及解决方法
- Android 延迟执行方法
- android点击手机返回键触发事件
- android帮助文档打开慢的解决方法