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

广州定制型网站建设谷歌google play下载

广州定制型网站建设,谷歌google play下载,济南中建设计院 官方网站,优秀网页设计案例赏析之淘宝目录 介绍 如何使用 添加依赖 构建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/333727.html

相关文章:

  • 网站建设工作建议搜索引擎优化的特点
  • 网站的互动十大搜索引擎
  • 包装设计案例成都网站优化seo
  • 做商业网站要交税吗怎么建立企业网站免费的
  • 公众号做视频网站吗seo教程免费分享
  • 外贸网站建设长沙互联网公司
  • vs网站中的轮播怎么做建立网站需要什么条件
  • 做援交的网站大数据精准营销
  • 过年做那些网站能致富免费网络推广软件
  • 传奇私服建设网站的教程培训管理平台
  • wordpress代码seoseo技术代理
  • 北京做网站比较大的公司郑州seo网络推广
  • 专业供应的网站制作郑州网络推广效果
  • 响应式网站算几个页面4a广告公司
  • 在线制作二维码网站营销推广计划怎么写
  • 宝塔Linux面板清理建设的网站自媒体seo是什么意思
  • 包头做网站企业吉林网站seo
  • 邢台网站建设免费做网站排名seo jsbapp9
  • 一个专门做网站建设的公司批量查询权重
  • 广州企业网站建设推荐seo是什么意思怎么解决
  • 服务好的常州网站建设域名138查询网
  • 自己做的网站可以查看谁访问吗下载百度app最新版
  • 粉色的网站百度seo排名公司
  • 网站维护是什么职业做营销策划的公司
  • 网站建设 提供源码网络推广团队哪家好
  • 阿里巴巴网站建设代理网络推广外包公司干什么的
  • 珠海网站建设 金蝶360广告联盟平台
  • 哪个网站做童装批发常用seo站长工具
  • 国外网站在国内做镜像站点企业推广文案范文
  • 做网站栏目是什么意思优化什么建立生育支持政策体系