当前位置: 首页 > wzjs >正文

广州定制型网站建设seo01网站

广州定制型网站建设,seo01网站,web浏览器手机版下载,360免费建站怎么进不去目录 介绍 如何使用 添加依赖 构建ViewModel 分析ViewModel ViewModel生命周期 ViewModel加载原理 介绍 ViewModel 的出现是为了解决数据因Android UI控制器在生命周期活动中造成数据丢失的问题。 在一般情况下,页面数据丢失(转屏、闪退等生命周期…

目录

介绍

如何使用

添加依赖

构建ViewModel

分析ViewModel

ViewModel生命周期

ViewModel加载原理


介绍

         ViewModel 的出现是为了解决数据因Android UI控制器在生命周期活动中造成数据丢失的问题。

        在一般情况下,页面数据丢失(转屏、闪退等生命周期重建现象)我们都会通过onSaveInstanceState() 方法并从 onCreate() 中的包中恢复其数据。但此方法仅适用于可以序列化然后反序列化的少量数据,而不适用于潜在的大量数据像用户列表或位图。 另一个问题是UI控制器经常需要进行可能需要一些时间才能返回的异步调用。UI控制器需要管理这些调用并确保系统在销毁后清理它们以避免潜在的内存泄漏。此管理需要大量维护,并且在为配置更改重新创建对象的情况下,这会浪费资源,因为对象可能必须重新发出已经进行的调用。

        诸如活动和片段之类的UI控制器主要用于显示UI数据,对用户操作作出反应或处理操作系统通信,例如许可请求。要求UI控制器也负责从数据库或网络加载数据,这会给类增加膨胀。为UI控制器分配过多的责任可能导致单个类尝试自己处理应用程序的所有工作,而不是将工作委托给其他类。以这种方式为UI控制器分配过多的责任也会使测试变得更加困难。 而 ViewModel 将视图数据所有权与UI控制器逻辑分离起来更容易,更有效的解决这一系列问题。

如何使用

添加依赖
// lifecycle
def lifecycle_version = "2.2.0-alpha02"
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version"
kapt "android.arch.lifecycle:compiler:$lifecycle_version"
构建ViewModel
class BaseModel: ViewModel() {var userTag = ""}
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val tvContent = findViewById<TextView>(R.id.tv_content)val baseModel = ViewModelProviders.of(this)[BaseModel::class.java]if(baseModel.userTag.isNotEmpty()){tvContent.text = baseModel.userTag}tvContent.setOnClickListener {baseModel.userTag = "Hello BaseModel"tvContent.text = baseModel.userTag}}}

分析ViewModel

ViewModel生命周期

        获取ViewModel时,ViewModel对象的范围限定为传递给ViewModelProvider的生命周期。 ViewModel保留在内存中,直到它的作用域生命周期永久消失:在活动的情况下,当它完成时,在片段的情况下,当它被分离时。 图中显示了活动经历轮换然后结束时的各种生命周期状态。该图还显示了关联活动生命周期旁边的ViewModel的生命周期。 此特定图表说明了活动的状态。相同的基本状态适用于片段的生命周期。

        通常在系统第一次调用活动对象的onCreate()方法时请求ViewModel。 系统可以在活动的整个生命周期中多次调用onCreate(),例如在旋转设备屏幕时。 而ViewModel从第一次请求ViewModel到活动完成并销毁之时就存在。

ViewModel加载原理

        ViewModel将UI控制器与数据加载操作分开,这意味着类之间的强引用较少,ViewModel内部是与Room和LiveData一起使用以达到替换加载的效果。 当数据发生变化时,Room存储层会通知到LiveData,然后LiveData会使用修改后的数据更新UI,这样确保数据在设备配置更改后仍然存在。

        关于LiveData,它是一个数据维持类,底层由Map实现。下篇文章会讲到,这里略知一二即可。

        关于Room,它是一个ORM库。后续文章会讲到,这里略知一二即可。

http://www.dtcms.com/wzjs/425492.html

相关文章:

  • 做网站前景怎么样百度网盘网页版登录
  • 优购物官方网站手机版网上怎么发布广告
  • 网站规划与栏目结构诊断兰州网络推广
  • 如何做网站赌博的教程长沙建站工作室
  • 电商网站开发案例web网页
  • 做网站好的网站建设公司泰安做百度推广的公司
  • 怎么把视频弄成一个链接网址福州seo网站管理
  • 经典网站关键词优化骗局
  • 南山模板网站建设公司深圳关键词优化
  • 2023年房地产最新消息2023网站seo
  • 网站建设与搜索引擎营销有什么关系外贸营销系统
  • 做网站一定要购买虚拟主机吗游戏优化大师有用吗
  • 千图网免费素材图库设计搜索引擎优化缩写
  • 乌鲁瓦提建设管理局网站培训体系包括四大体系
  • 广告发光字制作培训班seo关键词词库
  • 安庆做网站电话网络营销工具与方法
  • 杭州集团网站建设方案浙江seo关键词
  • 做网站哪些好如何设计网站
  • 在局网站 作风建设超级外链工具
  • 日照莒县网站建设公司深圳谷歌推广公司
  • 网站 网站建设定制在百度上怎么注册网站
  • 网站界面分类百度上看了不健康的内容犯法吗
  • 电子商务网站设计包括哪些内容汕头seo外包公司
  • 在一家传媒公司做网站编辑_如何?百度商家平台
  • 贪玩传奇手游官方网站百度推广联盟
  • 苏州高端网站线上营销活动案例
  • 常德自助建站seoseo推广收费标准
  • 网站布局设计创意百度知道客服电话人工服务
  • 网站上在线订购怎么做竞价推广教程
  • 网站建设及推广方案ppt重庆森林经典台词 凤梨罐头