我应该在Singleton类中处理一次性用品(Android RxJava 2)

Ami*_*ndi 10 android dagger-2 rx-java2

当我subscribe({})在Singleton类中使用Observable时,我是否需要.dispose()在某个时候调用方法?如果是,何时何地?因为在应用程序运行之前将保留单例.像这样的东西(Kotlin):

@Singleton
class MySingletonClass @Inject constructor(
    private val api: MyAPIManager
) {

fun fetchData() {

        //subscribed inside the Singleton
        api.service.getSomeDataFromAPI()
        .toRxObservable()
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe({ 
                   //do something internally with response
                   },
                   {
                   //handle error internally
                   })

}
Run Code Online (Sandbox Code Playgroud)

subscribe()方法返回一个Disposable.

我的主要问题是:我需要打电话dispose()吗?因为我认为我只能在应用程序完成或被杀时调用它,这是没有必要的.

No *_*o U 5

这里(可能)更大的担忧是您的单例正在 Android 组件的生命周期之外进行工作。如果您的单例是静态的或由您的 托管Application,那么当您的应用程序在后台时它可能会突然终止。如果这不是问题,那么您的问题的答案是否定的,您不需要处置您的订阅。但是,当您的应用程序在后台运行时,您仍然应该谨慎对待工作,除非用户期望这样做。(如果这样做,它可能应该在Service或按计划运行。)Application在用户感知应用程序“关闭”后,虚拟机可以持续很长时间,并且过多的资源消耗可能会导致不良评级和卸载。