[Android] 如何在 Activity 或者 Fragment 的生命周期结束时停止订阅 Observable

news/2024/5/20 0:07:09

NavUtil

利用 NavUtil,你可以在 Activity 或 Fragment 的生命周期发生变化时,停止订阅你的 Observable。

Usage

在Activity 中,为你的 Observable 应用 compose 操作符,如下所示:

// 假设这是你的 Observable
Observable.interval(1, TimeUnit.SECONDS) 
    // 你的 Observable 将在 Activity 的 OnStopped 触发后停止发射
    .compose(NavUtil.<Long>subscribeUtilEvent(this, LifecycleEvent.ON_STOPPED))
    .subscribe(new Subscriber<Long>() {
        @Override
        public void onCompleted() {
            Log.d(TAG, "onStart onCompleted() called");
        }

        @Override
        public void onError(Throwable e) {
            Log.d(TAG, "onStart onError() called with: e = [" + e + "]");
        }

        @Override
        public void onNext(Long aLong) {
            Log.d(TAG, "onStart onNext() called with: aLong = [" + aLong + "]");
        }
    });
    

在 Fragment 中的用法如下所示:

// 假设这是你的 Observable
Observable.interval(1, TimeUnit.SECONDS)
    // 你的 Observable 将在 Activity 的 onPaused 触发后停止发射
    .compose(NavUtil.<Long>subscribeUtilEvent(this, LifecycleEvent.ON_PAUSED))
    .subscribe(new Subscriber<Long>() {
        @Override
        public void onCompleted() {
            Log.d(TAG, "onCompleted() called");
        }

        @Override
        public void onError(Throwable e) {
            Log.d(TAG, "onError() called with: e = [" + e + "]");
        }

        @Override
        public void onNext(Long aLong) {
            Log.d(TAG, "onNext() called with: aLong = [" + aLong + "]");
        }
    });
    

目前支持的生命周期事件如下所示:

 public enum LifecycleEvent {
    ON_PAUSED,
    ON_STOPPED,
    ON_SAVE_INSTANCE_STATE,
    ON_DESTROYED,
    ON_VIEW_DESTORYED,
    ON_DETACHED,
}

Gradle

compile 'com.legendmohe.maven:navutil:x.y'

Download


http://www.niftyadmin.cn/n/4253836.html

相关文章

基础算法1——插入排序和希尔排序

View Code 1 //升序2 public class MyInsertSort {3 // 直接插入排序4 public void StraightInsertionSort(double[] sorted) {5 int i, j;6 for (i 2; i < sorted.length; i) {7 if (sorted[i] < sorted[i - 1]) {8 …

浅议企业对员工的压力管理

联合国国际劳工组织发表的一份调查报告认为&#xff1a;“心理压抑将成为 21世纪最严重的健康问题之一。”企业管理者已日益关注工作情景中的员工压力及其管理问题。因为工作中过度的压力会使员工个人和企业都蒙受巨大的损失。据美国一些研究者调查&#xff0c;每年因员工心理压…

数据结构 - 队列

队列数据结构 - 队列&#xff0c;先入先出。 // 队列实现 // ES5 var Queue function() {var items [];// 队列入列this.enqueue function(element) {items.push(element);};// 队列出列this.dequeue function() {return items.shift();};// 检查队列第一个元素this.front …

Ubuntu系统经常使用操作指令说明

使用U盘拷贝压缩文件 文件的压缩方法详见&#xff1a;3.6文件归档压缩及其释放 U盘直接插入机器USB接口。等待自己主动弹出窗体&#xff0c;在弹出窗体选择“文件->打开终端”&#xff0c;打开的终端当前文件夹默觉得U盘所在的文件夹。直接在当前文件夹进行拷贝的操作就可…

struts2中form的theme属性

struts2中theme属性包括xhtml,html,simple,ajax 。默认是xhtml theme&#xff1a;设置struts2标签的主题&#xff0c;默认为xhtml。themexhtml时&#xff1a;会默认额外生成tr,td。themesimple时&#xff1a;就生成标签所对应的html标签形式。 在默认情况下,表单元素是分布在不…

世界杯2号宣言

&#xff01;&#xff01;&#xff01;世界杯宣言&#xff01;&#xff01;&#xff01; 听&#xff0c;征招的号角已吹响&#xff0c;龙起卷&#xff0c;马长嘶&#xff0c;血液开始沸腾~ 兄弟们&#xff0c; 抄起喇叭&#xff0c;挥起彩旗&#xff0c;走&#xff0c;看球去…

数据结构 - 链表

链表数据结构 - 链表。 // 链表实现 // ES5 var linkedList function() {// 链表头var head null;// 链表长度var length 0;// 辅助类&#xff1a;节点var Node function(element) {this.element element;this.next null;};// 链表尾追加元素this.append function(eleme…

数据结构 - 集合

集合数据结构 - 集合&#xff0c;不重复。 // 集合实现 // ES5 var MySet function() {var items {};// 检查元素是否存在this.has function(value) {return items.hasOwnProperty(value);};// 添加元素this.add function(value) {// 集合不重复 - 先检查元素是否存在if (!…