LiveData是一个可观察的数据持有类,自动处理生命周期,防止内存泄漏,同步数据更新。

MutableLiveData:观察对象变化

Transformations.map和Transformations.switchMap:间接观察对象,map观察普通对象,switchMap观察LiveData的子类

例子

class MainActivity : AppCompatActivity() {    //创建LiveData    private val operation = MutableLiveData()    //创建num的LiveData    private val num = Transformations.map(operation) {        //operation对象改变,修改num.setValue(operation.num)        it.num    }    //创建result的LiveData    private val result = Transformations.switchMap(operation) {        //operation对象改变,添加operation.result.observe{result.setValue(it)}        it.result    }    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        operation.observe(this, Observer {            //operation对象发生变化时调用            textView1.text = it?.num?.toString()        })        num.observe(this, Observer {            //num对象发生变化时调用            textView2.text = it?.toString()        })        result.observe(this, Observer {            //result对象发生变化时调用            textView3.text = it?.toString()        })        button1.setOnClickListener {            //修改operation,主线程使用setValue,子线程使用postValue            operation.setValue(Operation((operation.value?.num ?: 0) + 1))        }        button2.setOnClickListener {            //计算            operation.value?.mul()        }    }}
class Operation(val num: Int) {    val result = MutableLiveData()    fun mul() {        //乘法计算        result.value = (num * num)    }}
<?xml version="1.0" encoding="utf-8"?>                

逻辑图

给LiveData添加观察者,使用setValue()方法修改数据,Observer会接受到回调 

使用Transformations的map和switchMap方法,实现间接观察对象

 

 

更多相关文章

  1. Android中的Parcelable序列化对象
  2. ListView一些相关知识
  3. Android(安卓)service启动流程分析.
  4. Android之基本组件
  5. Android(安卓)IPC 通讯机制源码分析
  6. 线程间通信----Handler
  7. Android(安卓)代理拦截系统层代码
  8. Android开发之《Android应用开发揭秘》UI事件汇总
  9. Android:Activity生命周期

随机推荐

  1. Android 监听按钮点击事件的三种方式(1:匿
  2. Android(安卓)HorizontalScrollView和Scr
  3. Android类说明---ArrayAdapter
  4. Android 如何获取apk大小与时间
  5. Android 程序的真正入口Application
  6. Android 屏幕录制命令adb screenrecord
  7. android 仿淘宝限时抢购倒计时
  8. 用repo创建本地版本库
  9. Android 即时音效
  10. Android 获取手机型号、信号强度、厂商等