首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Android-ViewModel (M-V-VM)避免重复网络调用

使用Android-ViewModel (M-V-VM)避免重复网络调用
EN

Stack Overflow用户
提问于 2019-07-18 21:11:13
回答 2查看 553关注 0票数 2

假设有一个活动'A‘。在onCreate()方法中的activity 'A‘中,您正在初始化一个ViewModel,然后仅在onCreate()中使用诸如vmInstance.getBooksFromSource()之类的视图模型进行网络调用。现在假设我的网络调用响应已经到来,同时用户将旋转屏幕,活动'A‘onCreate()方法将被触发,我们将获得相同的旧视图模型实例,但我的vmInstance.getBooksFromSource()将再次被触发。所以现在,如果我已经得到了响应,我想删除不必要的调用,这样就不会再次访问服务器。

然后在onCreate()方法中,我检查它的值(通过包检查),如果它是假的,那么只有我在进行网络调用。如果数据已经来自viewodel方法(即vmInstance.getBooksFromSource() ),是否有其他方法可以识别以避免不必要的网络调用

EN

回答 2

Stack Overflow用户

发布于 2019-07-18 21:33:31

您可以在ViewModelinit中调用您的方法。

代码语言:javascript
复制
class YourViewModel() : ViewModel() {

    init {
        getBooksFromSource()  
    }
}

您的ViewModel将在配置更改后保留其实例,并且不会重新创建它。

票数 2
EN

Stack Overflow用户

发布于 2019-07-31 18:31:33

代码语言:javascript
复制
livedata = Livedata<Object> //class member
getBooksFromSource(){
 if(livedata !=null){
   // call network 
}else{
  // do nothing.
}
return livedata

}

如果instance为null,这只会调用一次,这只是第一次调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57095322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档