Closed budaowengd closed 9 months ago
内存会根据作用域自动销毁对象, 你不用担心这么低级的问题, 只要不是故意浪费你创建1w个对象都没事, 你无需考虑按字节编程
另外提醒下scopeNetLife里面支持写多个请求
谢谢提醒, 不考虑并发请求,如果我在Activity发送过100次请求,会创建100个Scope和100个Observer,onDestory的时候确实是会自动销毁,因为在Activity中通过LifecycleOwner 和 ViewModel获取的Scope都是单例的,没有每次创建,我觉得还是可以借鉴下的。
作用域如果单例会导致某个请求终止了所有请求, 所以不考虑单例
至于你说多个请求写在一个作用域内, 这和并发没什么关系吧? 也可以串行请求
如果你想使用单例可以自己创建NetCoroutineScope对象自己一直持有, 没要求你一定使用scopeNetLife函数, 你看下scope函数源码就知道了
ViewModel是单例那是他的生命周期基于ViewModel本身, 而NetCoroutineScope生命周期不可能写个全局的吧?
你不嫌麻烦想单例可以直接自己创建个变量保存
当执行 scopeNetLife{ } 代码时,都会创建一个新的 NetCoroutineScope,并且还会创建一个新的 LifecycleObserver。
如果一个页面有几十个请求,或者请求需要频繁发送,那么会创建大量的 NetCoroutineScope 和 LifecycleObserver在内存中。
请问:是否可以使用 LifecycleCoroutineScope 进行封装呢? 每次发请求创建Scope 是否有更好的方法呢?