Android databingding与jetpack的lifecycle使用与比较
1.开发环境Android studio 3.4.0,kotlin
2.databinding用法
3.jetpack lifecycles的LiveData 和 ViewModel用法
测试效果如下:可以看到在onResume执行之前不会更新视图,在onStop之后也不会更新视图
①添加依赖
// ViewModel and LiveDataimplementation "android.arch.lifecycle:extensions:1.1.0"
②创建一个DevInfoVM继承ViewModel
import android.os.Handler
import android.os.Looper
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.zjhj.maxapp.bean.DevInfo
import com.zjhj.maxapp.http.Urls
import com.zjhj.maxapp.http.base.BaseRequest
import com.zjhj.maxapp.http.base.IBaseCallView
import com.zjhj.maxapp.utils.L
import java.util.*
import java.util.TimerTask/*** ViewModel层绑定绑定view**/
class DevInfoVM : ViewModel(), IBaseCallView {val handler = Handler(Looper.getMainLooper())val req: BaseRequest = BaseRequest(this)val liveData = MutableLiveData<DevInfo>()fun getDev(): LiveData<DevInfo> {loadDevInfo()return liveData}fun getData(res : String){L.d("$res 加载数据,返回null")liveData.postValue(null)}fun getMoreData() {L.d("加载更多,返回数据...")liveData.postValue(null)}private fun loadDevInfo() {//请求设备数据L.d("请求数据开始..")req.getData(url = Urls.getDevEvInfo, reqType = 111)}override fun loadStart(msg: String, reqType: Int) {}override fun loadSuccessData(content: String?, isLoadMore: Boolean, reqType: Int) {val info: MutableList<DevInfo>? = req.getResultList(content, DevInfo::class.java)if (info != null)liveData.postValue(info.get(0))Timer().schedule(object : TimerTask(){override fun run() {L.d("执行延时操作 10秒")liveData.postValue(null)}},10000)}override fun loadErr(message: String, reqType: Int) {}
}
③在Activity中绑定代码块
...lateinit var model: DevInfoVMoverride fun setContentView() {//获取ViewModelmodel = ViewModelProviders.of(this).get(DevInfoVM::class.java)//绑定生命周期model.getDev().observe(this, Observer<DevInfo> { devInfo ->// update UI1L.d("更新视图:" + devInfo?.values?.mainCompany)toolBar.title = devInfo?.values?.mainCompany})setContentView(R.layout.activity_main)setSupportActionBar(toolBar)model.getData("setContentView");}override fun onStart() {super.onStart()L.d("onStart")model.getData("onStart")}override fun onRestart() {super.onRestart()L.d("onRestart")}override fun onResume() {super.onResume()L.d("onResume")model.getData("onResume")}override fun onStop() {super.onStop()L.d("onStop")model.getData("onResume")}
...
- 比较databingding与jetpack的lifecycle
Android databingding与jetpack的lifecycle使用与比较相关推荐
- android Jetpack之Lifecycle的使用
Lifecycle是Jetpack提供的一个用于监听生命周期的库.我们知道在使用Activity和Fragment的时候,特别是两者一起使用的时候,生命周期将变得非常的复杂.而且我们需要在Activi ...
- Android JetPack系列---Lifecycle
Android JetPack系列-Lifecycle jetpack也出来很长一段时间了,最近比较闲,然后顺便记录一下自己的学习.然后准备打算的是写一个一系列的文章来完成自己对jetpack 的了解 ...
- 硬核讲解 Jetpack 之 LifeCycle 使用篇
大家好,我是 LifeCycle ,来自 Jetpack 生态链的最底端 . 我的作用是感知组件 (Activity/Fragment) 生命周期 ,并在合适的生命周期执行你分配给我的任务.我坚持贯彻 ...
- Jetpack 之 LifeCycle
Jetpack 之 LifeCycle 文章目录 Jetpack 之 LifeCycle @[toc] 1. 使用意义 2. LifeCycle诞生的背景 3. LifeCycle可以做什么 4. 使 ...
- Android Jetpack之LifeCycle
目录 Jetpack 1.那么Jetpack是什么呢? 2.为何使用Jetpack? 3. Jetpack与AndroidX LifeCycle 1.LifeCycle的作用编辑 2. LifeCy ...
- android mvvm livedata_再谈Android应用架构——Jetpack VS 生命周期
前面我们对MVC.MVP.MVVM进行了详尽的分析,但还有一个问题悬而未决,那就是生命周期.在Android平台上生命周期具有十分重要的意义,因此这也是架构必须考虑的因素之一.生命周期处理不好很容易发 ...
- Jetpack:Lifecycle 和 LiveData
文章目录 Lifecycle Lifecycle 的使用 Lifecycle 的实现原理 Lifecycle 如何使用状态机管理生命周期 LiveData LiveData 的使用 LiveData ...
- android data binding jetpack III 绑定一个方法
第三篇 给view绑定一下方法响应. (补充:1.被绑定的方法必须是public的. 1.绑定方法可以用主语法.也可以用以下双冒号方式"::" android:onClick= ...
- jetpack之LifeCycle
假如 我们有某个Activity 需要用到定位相关的逻辑我们代码大家或许会这样写 internal class MyLocationListener(private val context: Cont ...
最新文章
- js递归函数使用介绍
- 腾讯开源首个医疗AI项目,业内首个3D医疗影像大数据预训练模型
- 暴风影音CEO冯鑫称与腾讯不惜一战
- [已经验证通过]xp sp2 不支持WPA协议的解决办法
- hdu 1874 Dijkstra算法模板
- xshell使用指南
- python 自动输入用户密码_Linux中Python自动输入sudo 密码
- 充分发挥计算机在教学中的辅助作,充分发挥计算机在教学中的辅助作用
- html绘制流程图飞线,基于jsplumb绘制流程图
- Emacs中自动刷新dired缓冲区
- 最新谷歌算法面试真题:将字符串翻转到单调递增
- 计算机文化宣传普及知识展,浅谈计算机文化
- 支付宝第三方支付保证数据的安全性
- 使用eigen计算空间坐标变换
- TI Sitara系列AM64x核心板(双核ARM Cortex-A53)软硬件规格资料
- 读书笔记——我的学习与研究经历(杨振宁/2012)
- 如何在Joomla中创建一个漂亮的单页网站
- python k线顶分型_顶分型和底分型的确认及K线包含处理
- YOLOv3庖丁解牛(一):网络结构
- java读取pdf多表格_在Java中使用tabula提取PDF中的表格数据
热门文章
- 前端base64加密
- Java使用Poi实现导出Word段落以及表格,XWPFParagraph和XWPFRun详解,生成目录,生成折线图、柱状图、饼状图
- Unity3D 鼠标拖动和旋转物体以及鼠标拖动图片
- 2015,刺激、快乐与煎熬
- 3.人工智能原理-梯度下降:能改
- 微信小程序蓝牙连接硬件设备并进行通讯,小程序蓝牙因距离异常断开自动重连,js实现crc校验位
- macbookpro的ctrl和command互换
- Wi-Fi 频段信道划分和常见国家信道列表
- 个人邮箱怎么填写?微信如何设置自己的邮箱?怎么收邮件通知?
- 已解决Encountered error while trying to install package.wxPython