android - AppObservable 是 Android 必须的吗?

标签 android retrofit rx-java dagger rx-android

在 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 中取消订阅。这应该足够了。

另请参阅:

关于android - AppObservable 是 Android 必须的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733192/

相关文章:

Android DatePickerDialog 强调色(在 v21+ 中)

android - 如何将包含数组的模型发布到 retrofit 车身发布中?

java - Retrofit 2 返回 HTML 而不是 JSON

java - 如何通过改造提取独特的数据

java - RxJava v1 到 v2

android - 没有 "Apps using Usage Data"或 android.settings.USAGE_ACCESS_SETTINGS Intent 的设备

Android:前置摄像头的手势识别

java - Java中是否有类似于strip_tags的东西?

java - 如何在 Rx 链中包含条件?

java - 可观察,从列表中访问输入