0

如果应用中使用了android-arch-lifecycle组件,是否需要使用Rxlifecycle?还是 Rxlifecycle 是多余的?或者如果我使用了 Rxlifecycle 和 RxJava,是否有必要使用 android-arch-lifecycle 组件?

4

2 回答 2

2

不,您不需要使用 RxLifecycle,但如果您使用 RxJava,使用 RxLifecycle 可能会很有用。

如果你使用 RxJava,你必须关心自己的订阅和退订。Android 的新LiveData(类似于 Rx Observables)通过使用 android-arch-lifecycle 自行完成。如果您还想在 RxJava 中了解生命周期,您可以使用RxLifecycle。如他们的 Github 页面所述,RxLifecylce 需要一个生命周期提供程序。生成 Lifecycle Provider 的一种解决方案是使用 android-arch-lifecycle。

public class MyActivity extends LifecycleActivity {
private final LifecycleProvider<Lifecycle.Event> provider
    = AndroidLifecycle.createLifecycleProvider(this);

@Override
public void onResume() {
    super.onResume();
    myObservable
        .compose(provider.bindToLifecycle())
        .subscribe();
}

编辑:RxLifecycle 在某些情况下可能会出现问题,这就是为什么创建者建议使用AutoDispose或手动处理订阅。他描述了这篇文章中的问题。

于 2017-08-01T08:22:08.823 回答
1

我相信,如果你不使用 android 架构组件 ViewModel,这两个库将是相同的。

使用ViewModel,您可以在设备旋转时阻止数据准备,这意味着 ViewModel 保留在内存中,即使活动必须重新启动以响应设备旋转。

我认为 RxLifecycle 库中不存在这样的组件。

于 2017-07-26T06:07:56.270 回答