我有订阅者与活动/片段的UI组件进行交互。我不知道我何时何地取消订阅。我看到两种方式:前者是在onPause()方法中取消订阅,后者是在onStop()方法中取消订阅它们。哪一个是正确的,为什么?感谢
答案 0 :(得分:0)
您应该使用onPause
,因为您不需要在活动或片段不运行时运行侦听器。每次项目不再运行时,都会调用onPause
。在通往毁灭的道路上召唤onStop
。
答案 1 :(得分:0)
“但是,如果我的observable在活动开始后下载了一些内容,那该怎么办? 对于必须独立于活动生命周期的长时间操作或操作,您需要使用Service组件
答案 2 :(得分:0)
请查看此https://github.com/trello/RxLifecycle。它将阻止您的应用程序在视图和上下文内存泄漏上抛出NPE。 阅读MVP模式。下面我做了示例性实现
演示者课程
public class SamplePresenter {
@NonNull
private final Observable<SomeData> someDataObservable;
public SamplePresenter(@NonNull ApiService apiService) {
someDataObservable = apiService.apiRequest()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io());
}
@NonNull
public Observable<SomeData> getSomeDataObservable() {
return someDataObservable;
}
}
MainActivity类
@Inject
SamplePresenter samplePresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
samplePresenter.getSomeDataObservable()
.compose(this.<SomeData>bindToLifecycle())
.subscribe(new Action1<SomeData>() {
@Override
public void call(SomeData someData) {
}
});