美文网首页
Jetpact 之 LiveData

Jetpact 之 LiveData

作者: 咸死的鱼_O | 来源:发表于2022-01-20 15:37 被阅读0次
LiveData和ViewModel的关系
  • 在ViewModel中的数据发生变化是通知页面


    image.png

    当ViewModel数据发生变化通过LiveData通知View数据变化进行更新

LiveData应用:
  • 非UI线程使用postValue
  • UI线程使用setValue
class MyViewModel :ViewModel() {
    private lateinit var liveData:MutableLiveData<Int>

   fun getCurrentSecond():MutableLiveData<Int>{
        if(!this::liveData.isInitialized){
            liveData = MutableLiveData()
            liveData.value = 0
        }
        return liveData
    }
}
class Test2Activity : AppCompatActivity() {

    private var viewModel: MyViewModel? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_test2)

        viewModel =
            ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory(application)).get(
                MyViewModel::class.java
            )
        findViewById<TextView>(R.id.textView).text = viewModel?.getCurrentSecond()?.value.toString()
        viewModel?.getCurrentSecond()?.observe(this) {
            findViewById<TextView>(R.id.textView).text = it.toString()
        }
        startTime()
    }

    private fun startTime() {
        Timer().schedule(
            object : TimerTask() {
                override fun run() {
                    viewModel?.getCurrentSecond()
                        ?.postValue((viewModel?.getCurrentSecond()?.value?.plus(1)))
                }

            },
            1000,
            1000
        )
    }
}
LiveData的优势:
  • 确保页面符合数据状态
  • 不会发生内存泄漏
  • 不会因Activity停止而导致崩溃
  • 不在需要手动处理生命周期
  • 数据始终保持最新状态
  • 适当的配置更改
  • 共享资源

相关文章

网友评论

      本文标题:Jetpact 之 LiveData

      本文链接:https://www.haomeiwen.com/subject/uepjhrtx.html