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
  • 相关阅读:
    感知器算法--python实现
    PHP appserv + ZendStudio12.5.1 + 注册码
    第九周-每周例行报告
    第八周-每周例行报告
    感谢THUNDER
    第七周-每周例行报告
    第六周-每周例行报告
    第五周-每周例行报告
    第四周-四则运算试题生成
    第四周-单元测试
  • 原文地址:https://www.cnblogs.com/naray/p/15196253.html
Copyright © 2011-2022 走看看