优雅地使用rxbus

简介: //响应事件源,多tag@Subscribe(thread = EventThread.MAIN_THREAD, tags = {@Tag(RxBusAction.
//响应事件源,多tag
@Subscribe(thread = EventThread.MAIN_THREAD, 
        tags = {@Tag(RxBusAction.MAIN_HOME_REFRESH),
                @Tag(RxBusAction.ON_APP_LOGOUT)})
public void loadHomeModule(RxBusMsg<HomeModule> event) {
    Clog.e("loadHomeModule ");


}
//响应事件源,单tag
@Subscribe(thread = EventThread.MAIN_THREAD, tag=RxBusAction.ON_APP_LOGIN)
public void refresh(RxBusMsg<HomeModule> event) {
    Clog.e("refresh");


}
//post msg,根据 Action:ON_APP_LOGOUT可以直接查找订阅者,提供了两中响应的纬度
//1.action 2.class
RxBus.post(RxBusAction.ON_APP_LOGOUT, new RxBusMsg<HomeModule>(null));


/**
 * 定义event action的常量
 *
 * @author GanQuan
 * @since 2018/3/15.
 */
// msg constants
public interface RxBusAction {
    String MAIN_HOME_REFRESH = "main_home_refresh";
    String ON_APP_LOGOUT = "on_app_logout";
    String ON_APP_LOGIN = "on_app_login";

}


/**
 * event消息体
 *
 * @author GanQuan
 * @since 2018/3/15.
 */

public class RxBusMsg<T> implements Serializable {
    public String tag;
    public T value;

    /**
     * @param value 当value为空时必须传入泛型的类型
     */
    public RxBusMsg(@NonNull T value) {
        this.value = value;
    }

    public RxBusMsg<String> obtainMsg(String msg) {
        return new RxBusMsg<>(msg);
    }
}

目录
相关文章
|
7月前
|
安全 Android开发
你是否了解 RxJava 的 Disposable ?
你是否了解 RxJava 的 Disposable ?
259 0
|
Java API 调度
Kotlin 中的suspend 关键字
Kotlin 中的suspend 关键字
219 0
|
XML Android开发 数据格式
Android实现ProgressBar旋转菊花加载的动画
Android实现ProgressBar旋转菊花加载的动画 在一些常见到的加载中需要显示一个加载动画,如旋转的菊花这样的动画效果,开发中有两种方案,一种是直接让设计师给出一个gif图片,然后写入到布局,另外一种,使用Android动画,把一张静止的图片动起来,本例用后者实现。
3763 0
|
算法 Java Android开发
Android rxjava和LiveData中的内存泄漏
Android rxjava和LiveData中的内存泄漏
223 0
|
7月前
|
存储 Android开发 C++
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
180 3
|
存储 安全 Java
Android DataStore:安全存储和轻松管理数据
Android DataStore:安全存储和轻松管理数据
|
存储 移动开发 缓存
JavaScript面试题系列(6)每篇10题
JavaScript面试题系列(6)每篇10题
36 0
|
XML 前端开发 Java
Android极简MVVM,从一个基类库谈起
这篇文章,主要详细介绍如何封装一个MVVM的基类库,以及MVVM架构模式在实际业务中的用法,最后会把实际的封装代码开源,并提供远程依赖。
178 0
|
存储 SQL 关系型数据库
Android数据库Sqlite的基本用法及升级策略
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
314 0
|
存储 XML 缓存
Android本地存储的几种方式
Android提供了多种选择来保存永久性的数据,根据不同的需求来使用不同的保存方式
393 0