假设有一个活动'A‘。在onCreate()方法中的activity 'A‘中,您正在初始化一个ViewModel,然后仅在onCreate()中使用诸如vmInstance.getBooksFromSource()之类的视图模型进行网络调用。现在假设我的网络调用响应已经到来,同时用户将旋转屏幕,活动'A‘onCreate()方法将被触发,我们将获得相同的旧视图模型实例,但我的vmInstance.getBooksFromSource()将再次被触发。所以现在,如果我已经得到了响应,我想删除不必要的调用,这样就不会再次访问服务器。
然后在onCreate()方法中,我检查它的值(通过包检查),如果它是假的,那么只有我在进行网络调用。如果数据已经来自viewodel方法(即vmInstance.getBooksFromSource() ),是否有其他方法可以识别以避免不必要的网络调用
发布于 2019-07-18 21:33:31
您可以在ViewModel的init中调用您的方法。
class YourViewModel() : ViewModel() {
init {
getBooksFromSource()
}
}您的ViewModel将在配置更改后保留其实例,并且不会重新创建它。
发布于 2019-07-31 18:31:33
livedata = Livedata<Object> //class member
getBooksFromSource(){
if(livedata !=null){
// call network
}else{
// do nothing.
}
return livedata}
如果instance为null,这只会调用一次,这只是第一次调用。
https://stackoverflow.com/questions/57095322
复制相似问题