Android LiveData Transformations

2020-11-22 22:58:52

参考地址 LiveData的数据转换 Transformations使用

有时候有这样的需求,需要在LiveData将变化的数据通知给观察者前,改变数据的类型;或者是返回一个不一样的LiveData。

这里介绍一个类Transformations,它可以帮助完成上面的这些操作。

Transformations.map()

//todo  LiveData创建方法1val liveData: MutableLiveData<NeiHanResult> = neiHanRepository.liveData
//todo LiveData创建方法2val liveData2 = Transformations.map(neiHanRepository.liveData) { it }!!Transformations.map()使用要修改后的数据对象val liveDataTemp = MutableLiveData<List<NeiHanResult2>>()//定义一个临时list存储对象var listData = mutableListOf<NeiHanResult2>()//todo  LiveData创建方法3 并修改数据val liveData3 = Transformations.map(neiHanRepository.liveData) {it.result.forEach { item ->val formattedTime = item.text + "66666"listData.add(NeiHanResult2(formattedTime, item.text))LogUtils.d(item.text)}//执行数据修改后 给新数据赋值liveDataTemp.value = listData}
//执行数据修改的方法neiHanViewModel.liveData3.observe(this, Observer {})//监听所需修改后数据neiHanViewModel.liveDataTemp.observe(this, Observer<List<NeiHanResult2>> {var text = ""it.forEach {text += "${it.name}:${it.text}\n"text_contact.text = text}})


  • 2019-08-31 14:05:00

    JNI Crash:异常定位与捕获处理

    在Android JNI开发中,经常会遇到JNI崩溃的问题,尤其带代码量大,或者嵌入了第三方代码的情况下,很难进行问题定位和处理。本文将介绍两种常见的JNI崩溃处理方法,包括: 每个JNI调用后进行异常检测处理(适用于JNI代码量很小的情况) 捕获系统崩溃的Signal,并进行异常处理(适用于JNI代码量大,难以每句话后面都进行异常检测的情况)