zoukankan      html  css  js  c++  java
  • Android Jetpack架构之ViewModel

    一、ViewModel是什么?

      ViewModel以注重组件生命周期的方式存储和管理页面相关的数据。ViewModel让Activity未设置configChanages="orientation|screenSize"属性时,设备发生旋转后,页面数据得以继续留存。

    二、ViewModel产生背景?

    • 瞬态数据的丢失。
    • 异步请求的内存泄漏。
    • 类代码增多逻辑复杂,引起的难维护。

    三、ViewModel的作用

    • ViewModel是介于View(视图)和Model(数据)之前的桥梁,帮助View和Model传递数据。
    • 解耦View和Model之间的耦合,并提供View和Model间的数据通信。

    四、示例

      RViewModel类:

    class RViewModel : ViewModel() {
    
        internal var count: Int = 0
    
    }

      MainActivity类,未设置configChanages属性:

    class MainActivity : AppCompatActivity() {
    
        private var _rViewModel: RViewModel? = null
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            _rViewModel = ViewModelProvider(this).get(RViewModel::class.java)
    
            button.setOnClickListener {
                _rViewModel?.count = (_rViewModel?.count ?: 0) + 1
                countText.text = _rViewModel?.count?.toString() ?: "0"
            }
    
        }
    
        override fun onStart() {
            super.onStart()
    
            Log.d("main", "${_rViewModel?.count?.toString()}")
            countText.text = _rViewModel?.count?.toString() ?: "0"
        }
    
    }

      结果:

    D/main: 1
    D/main: 2
    D/main: 3
    D/main: 4
    D/main: 5
    D/main: 旋转后
    D/main: 5
  • 相关阅读:
    如何设计工作流引擎?
    产品特点概述驰骋工作流
    驰骋工作流程如何与您的系统进行耦合
    进制转换
    DNS欺骗(转) Anny
    Remember My Account Number(2 schema) Anny
    Mysql中的临时表使用方法(转) Anny
    Mysql任务调度(Event Schedular) Anny
    Using ssh connect to Amazon EC2 instance Anny
    Amazon EC2名词项目笔记(转) Anny
  • 原文地址:https://www.cnblogs.com/naray/p/15196253.html
Copyright © 2011-2022 走看看