NavUtil
利用 NavUtil,你可以在 Activity 或 Fragment 的生命周期发生变化时,停止订阅你的 Observable。Usage
首先,需要初始化 NavUtil 单例然后,在Activity 中,为你的 Observable 应用 compose 操作符,如下所示:public class App extends Application { @Override public void onCreate() { super.onCreate(); NavUtil.init(this); } }
在 Fragment 中的用法如下所示:Observable.interval(1, TimeUnit.SECONDS) .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 + "]"); } });
目前支持的生命周期事件如下所示:Observable.interval(1, TimeUnit.SECONDS) .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'
![]()
查看原文:http://legendmohe.net/2017/01/23/android-%e5%a6%82%e4%bd%95%e5%9c%a8-activity-%e6%88%96%e8%80%85-fragment-%e7%9a%84%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f%e7%bb%93%e6%9d%9f%e6%97%b6%e5%81%9c%e6%ad%a2%e8%ae%a2%e9%98%85-observable/
[Android] 如何在 Activity 或者 Fragment 的生命周期结束时停止订阅 Observable
最新推荐文章于 2025-03-10 20:17:27 发布