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
  • 相关阅读:
    diango-tinymce富文本编译器
    django 1.10以上版本,引入js
    linux中使用vi 打开文件时,能显示行号
    ubuntu 16.04 系统语言汉化
    ubuntu16.04 一些简单软件安装操作
    urllib -- ProxyHandler处理器(代理设置)
    urllib基本使用-Handler和自定义的opener()
    urllib基本使用 urlopen(),Request
    python3
    Ubuntu安装Mysql+Django+MySQLdb
  • 原文地址:https://www.cnblogs.com/naray/p/15196253.html
Copyright © 2011-2022 走看看