android jetpack 简单livedata和viewmodel

自己复习

app build中添加

implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0' 

自定义类继承viewmodel 其中存储livedata对象

class MyViewModel : ViewModel(){
    /**
     * 通过懒加载new一个mutablelivedata对象
     * livedata是一个抽象类 muteablelivedata是它的实现类
     * 他们之间的关系类似于list和arraylist
     * 这里的name 说白了就是一个个listdatta类型的string
     * 我们只是借助了livedata的特性,本质上还是string
     */
    val name: MutableLiveData by lazy {
        MutableLiveData()
    }
}

livedata自带生命周期检测当生命周期结束了就不执行方法了,可以这样理解。

在activity中获取model对象

val model = ViewModelProvider.NewInstanceFactory().create(MyViewModel::class.java)

 

model元素中进行监听

model.name.observe(this, Observer{ it ->
    // update UI
    Log.i(TAG,"=====it$it")
    textView2.text = it
})

改编model中对象的值或者用postvalue改变值,界面自动更改

  model.name.value = "123"\
            //线程中用post
            Thread(Runnable {
                model.name.postValue("456")
            }).start()

你可能感兴趣的:(android)