目录

  • 保存数据
  • 避免内存泄漏
  • 减少界面控制器臃肿

保存数据

ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。
如果系统销毁或重新创建界面控制器,则存储在其中的任何瞬态界面相关数据都会丢失。例如,应用可能会在它的某个 Activity 中包含用户列表。为配置更改重新创建 Activity 后,新 Activity 必须重新提取用户列表。对于简单的数据,activity 可以使用 onSaveInstanceState() 方法从 onCreate() 中的捆绑包恢复其数据,但此方法仅适合可以序列化再反序列化的少量数据,而不适合数量可能较大的数据,如用户列表或位图。

避免内存泄漏

Activity 和 Fragment界面控制器经常需要进行可能需要一些时间才能返回的异步调用。界面控制器需要管理这些调用,并确保系统在其销毁后清理这些调用以避免潜在的内存泄漏

减少界面控制器臃肿

使用ViewModel从界面控制器逻辑中分离出视图数据所有权的操作更容易且更高效。

ViewModel优点相关推荐

  1. Android架构——ViewModel原理学习总结

    本文是楼主学习ViewModel 源码的一些总结,感觉ViewModel的源码是Android 三大架构中 最容易理解的一个了.本文ViewModel基于版本androidx.lifecycle:li ...

  2. LiveData + ViewModel + Room (Google 官文)+Demo

    原文地址:lovestack.github.io/2017/11/13/- demo:github.com/lovestack/V- 本指南适用于那些过去构建应用程序有基础知识,现在想知道构建强大的生 ...

  3. LiveData ViewModel 使用详解

    什么是 LiveData LiveData 是一个可观测的数据持有类,但是不同于通常的被观察者,LiveData 具有生命周期感知能力.通俗点说,LiveData 就是具有 "Live&qu ...

  4. RxSwift ViewModel定义

    RxSwift ViewModel定义 观察者模式 观察者模式目标:定义对象间一对多的依赖关系,当一个对象(被观察者)状态发生改变时,所有依赖于它的对象(观察者)都得到通知并被自动更新. 对于RxSw ...

  5. ViewModel优雅的弹加载窗和获取Context

    前言 目前安卓开发一般都是用的mvvm模式,Jetpack的ViewModel是必不可少的一部分,而vm的生命周期要比Activity和Fragment长的,所以其一般不推荐其直接持有A或F,因为可能 ...

  6. router优点 vue_Vue 出场率99%的面试题

    前言 作为前端开发中现行最火的框架之一,Vue 在面试中出现的频率不断增加.基于此,总结了一些 Vue 方面经常出现的面试题,留给自己查看消化,也分享给有需要的小伙伴 感兴趣的小伙伴也可以点击 这里, ...

  7. Android的MvVM模式探讨: Databinding 与 ViewModel+LiveData+Repository对比

    Mvvm模式: Databinding 与 ViewModel+LiveData+Repository 作者:Yagami3zZ,转自:https://www.jianshu.com/p/e7628d ...

  8. Mvvm模式: Databinding 与 ViewModel+LiveData+Repository

    前言: 本文主要是对常见设计模式的一些分析,以及讲述在Android项目中实现Mvvm模式的两种方式.通过Databinding或者ViewModel+LiveData+Repository如何实现M ...

  9. MVVM是什么?以及MVVM优点

    MVVM 1.MVVM是什么? MVVM是Model-View-ViewModel的简写 它本质上是MVC 的改进版 MVVM(Model-View-ViewModel)框架的由来是MVP(Model ...

最新文章

  1. 进制转换与ascll码利用
  2. win10x64下的redis安装与使用
  3. python下载文件到本地-Python下载网络文本数据到本地内存的四种实现方法示例
  4. boost::geometry::detail::overlay::traverse用法的测试程序
  5. sqlserver数据恢复(100%可用)
  6. 有一次去校内的某个礼堂看电影,在门口有个长得很斯文的陌生人一脸神秘地跟我说:师弟,能不能进去之后,把电影票从厕所的气窗扔出来给我……...
  7. Django报错NameError: name ‘ListView‘ is not defined
  8. networkx怎么显示图_如何将标签添加到networkx图形中的节点?
  9. 逐一解读Gartner评出的11大信息安全技术
  10. 无人驾驶智能车竞速赛,智能大会无人驾驶比赛
  11. 自学-Linux-老男孩Linux77期-day3
  12. linux入门目录汇总
  13. 美年旅游_自由行_自由行分页PageHelper
  14. 关于“软件设计师”考试的感悟分享
  15. 趣商宝微信招生方案 ,线上招生难,十大绝招帮您搞定微信吸粉!
  16. 罗克韦尔自动化2018年自动化博览会开始接受注册
  17. 智慧消防应用中多设备联动火灾报警系统
  18. VIRTIO PCI 设备
  19. 质子交换膜燃料电池(PEMFC) Simulink模型 包括静态模型和动态模型(两个独立模型 可计算输出电压、输出功率、效率
  20. 微信代驾小程序-景德镇代驾服务平台小程序源码分享

热门文章

  1. 雷达图文字被遮住的解决办法
  2. python爬虫实践-02-大众点评评论爬取-破解CSS字体加密
  3. mix3信号测试软件,同样是旗舰,小米MIX3信号比iPhone强太多!
  4. MySQL数据库-增删改查
  5. 两年来遵守的代码风格
  6. 身份证实名校验接口,身份证二要素核验接口,身份证查询API接口【零存储,数据直连】
  7. 小翼推荐-【最新qq空间软件,软件下载】
  8. 多么可笑的公司呀,他们是搞Scrum工具的
  9. Scrum Master也山寨
  10. Js-鼠标移动,二维码的显示和隐藏