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")}
...
  1. 比较databingding与jetpack的lifecycle

Android databingding与jetpack的lifecycle使用与比较相关推荐

  1. android Jetpack之Lifecycle的使用

    Lifecycle是Jetpack提供的一个用于监听生命周期的库.我们知道在使用Activity和Fragment的时候,特别是两者一起使用的时候,生命周期将变得非常的复杂.而且我们需要在Activi ...

  2. Android JetPack系列---Lifecycle

    Android JetPack系列-Lifecycle jetpack也出来很长一段时间了,最近比较闲,然后顺便记录一下自己的学习.然后准备打算的是写一个一系列的文章来完成自己对jetpack 的了解 ...

  3. 硬核讲解 Jetpack 之 LifeCycle 使用篇

    大家好,我是 LifeCycle ,来自 Jetpack 生态链的最底端 . 我的作用是感知组件 (Activity/Fragment) 生命周期 ,并在合适的生命周期执行你分配给我的任务.我坚持贯彻 ...

  4. Jetpack 之 LifeCycle

    Jetpack 之 LifeCycle 文章目录 Jetpack 之 LifeCycle @[toc] 1. 使用意义 2. LifeCycle诞生的背景 3. LifeCycle可以做什么 4. 使 ...

  5. Android Jetpack之LifeCycle

    目录 Jetpack 1.那么Jetpack是什么呢? 2.为何使用Jetpack? 3. Jetpack与AndroidX LifeCycle 1.LifeCycle的作用​编辑 2. LifeCy ...

  6. android mvvm livedata_再谈Android应用架构——Jetpack VS 生命周期

    前面我们对MVC.MVP.MVVM进行了详尽的分析,但还有一个问题悬而未决,那就是生命周期.在Android平台上生命周期具有十分重要的意义,因此这也是架构必须考虑的因素之一.生命周期处理不好很容易发 ...

  7. Jetpack:Lifecycle 和 LiveData

    文章目录 Lifecycle Lifecycle 的使用 Lifecycle 的实现原理 Lifecycle 如何使用状态机管理生命周期 LiveData LiveData 的使用 LiveData ...

  8. android data binding jetpack III 绑定一个方法

    第三篇 给view绑定一下方法响应. (补充:1.被绑定的方法必须是public的.   1.绑定方法可以用主语法.也可以用以下双冒号方式"::" android:onClick= ...

  9. jetpack之LifeCycle

    假如 我们有某个Activity 需要用到定位相关的逻辑我们代码大家或许会这样写 internal class MyLocationListener(private val context: Cont ...

最新文章

  1. js递归函数使用介绍
  2. 腾讯开源首个医疗AI项目,业内首个3D医疗影像大数据预训练模型
  3. 暴风影音CEO冯鑫称与腾讯不惜一战
  4. [已经验证通过]xp sp2 不支持WPA协议的解决办法
  5. hdu 1874 Dijkstra算法模板
  6. xshell使用指南
  7. python 自动输入用户密码_Linux中Python自动输入sudo 密码
  8. 充分发挥计算机在教学中的辅助作,充分发挥计算机在教学中的辅助作用
  9. html绘制流程图飞线,基于jsplumb绘制流程图
  10. Emacs中自动刷新dired缓冲区
  11. 最新谷歌算法面试真题:将字符串翻转到单调递增
  12. 计算机文化宣传普及知识展,浅谈计算机文化
  13. 支付宝第三方支付保证数据的安全性
  14. 使用eigen计算空间坐标变换
  15. TI Sitara系列AM64x核心板(双核ARM Cortex-A53)软硬件规格资料
  16. 读书笔记——我的学习与研究经历(杨振宁/2012)
  17. 如何在Joomla中创建一个漂亮的单页网站
  18. python k线顶分型_顶分型和底分型的确认及K线包含处理
  19. YOLOv3庖丁解牛(一):网络结构
  20. java读取pdf多表格_在Java中使用tabula提取PDF中的表格数据

热门文章

  1. 前端base64加密
  2. Java使用Poi实现导出Word段落以及表格,XWPFParagraph和XWPFRun详解,生成目录,生成折线图、柱状图、饼状图
  3. Unity3D 鼠标拖动和旋转物体以及鼠标拖动图片
  4. 2015,刺激、快乐与煎熬
  5. 3.人工智能原理-梯度下降:能改
  6. 微信小程序蓝牙连接硬件设备并进行通讯,小程序蓝牙因距离异常断开自动重连,js实现crc校验位
  7. macbookpro的ctrl和command互换
  8. Wi-Fi 频段信道划分和常见国家信道列表
  9. 个人邮箱怎么填写?微信如何设置自己的邮箱?怎么收邮件通知?
  10. 已解决Encountered error while trying to install package.wxPython