https://developer.android.com/topic/architecture/data-layer#in-内存高速缓存在浏览这些文档时,我发现Coroutines
可以非常容易地控制以下事实:Internet连接是从AppCoroutineContext
而不是从viewModel
进行的。
如果用户在网络请求进行时离开屏幕,则会取消该请求,并且不会缓存结果。NewsRepository不应该使用调用者的CoroutineScope来执行此逻辑。相反,NewsRepository应该使用附加到其生命周期的CoroutineScope。获取最新消息需要是一项面向应用程序的操作。
您知道如何将其应用于RxJava吗?我必须订阅Application context
。你什么时候给dispose ()
打电话
有可能吗?
如果你真的不想取消网络呼叫,你应该把它放在服务中。
如果你想让你的调用与应用程序生命周期绑定,你真的不需要担心。只需在应用程序范围内的singleton对象中进行订阅-如果你Hilt并将对象注释为@Singleton
,然后将其注入到你需要的地方,这很容易。
一般来说,你不应该这样做,所以我建议你要么查看服务,要么把你的网络呼叫放在视图模型中。