在 Android 应用程序中,AppObservable 是每个 observable 必须的吗?
我有一个改造生成的Observable,由Dagger注入(inject):
public class UserInfoFragment extends Fragment {
@Inject
Observable<User> user;
}
在此示例中
我应该像这样覆盖 onViewCreated()
中的“用户”吗?
this.user = AppObservable.bindFragment(this , user);
此外,如果我不直接注入(inject) Observable,而是注入(inject)包含 Observable 的对象
:
@Inject
CachedValue<User> cachedUser;
在 CachedValue 中,有一个 Observable (其他字段已跳过):
public class CachedValue<T> {
public Observable<T> getObservable() {
return networkObservable.startWith(localObservable).take(1);
}
}
我应该用 AppObservable 提升的 Observable 替换这个 Observable 吗?
AppObservable.bindFragment(this , cachedUser.getObservable());
所有这些代码都可以在模拟器中没有 AppObservable 的情况下完美运行(我确实在 onDestroyView()
中取消了这些订阅),但我不知道在实际情况下这是否足够?长时间运行后会不会出现内存泄漏?
在rx-android的示例项目中,我到处都看到了AppObservable。但我不知道如何正确处理注入(inject)的 Observables(或包含 Observables 的对象)。
非常感谢。
最佳答案
不,我认为 AppObservable 不是必须的。
如果您检查AppObservable source code很明显,AppObservable 有助于确保在 fragment 已被销毁/分离后,不会将任何项目转发到 fragment 。
根据我的理解,您可以在发出项目之前调用 isUnsubscribed 以及在 onDestroyView 中取消订阅。这应该足够了。
另请参阅:
- https://github.com/ReactiveX/RxAndroid/issues/127 (您可能会阅读本文,但仅供将来引用。)
关于android - AppObservable 是 Android 必须的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733192/