Android Jetpack

目录

一、LiveData

1.1 优点

1.2 常用方法

1.3 原理

二、ViewModel

 1.1 ViewModel 怎么保存和恢复


一、LiveData

官方文档:LiveData

LiveData 主要用于观察数据变动与更新

1.1 优点

  • 数据变更时更新UI
  • 没有内存泄露
  • 无需手动处理生命周期
  • 共享资源
  • 不会因为停止 Activity 崩溃

1.2 常用方法

方法名描述
observe(@NonNull LifecycleOwner, @NonNull Observer<T> observer)设置数据变更后处理的监听。
setValue设置数据,只能在主线程调用,在其他线程调用会抛出异常。
getValue获取数据。
postValue向主线程设置数据。如果在主线程调用,不一定会立即执行。

1.3 原理

在 observe 方法中,将 Owner 与 observer 绑定,信息放入 LifecycleBoundObserver。

LifecycleBoundObserver 交给 LifecycleRegistry 注册。Owner 持有 LifecycRegistry。

Owner 生命周期变更时,LifecycleBoundObserver 会接到响应,然后通知活跃的 observer 执行。

Owner 活跃状态,onStartonResumeonPause

Owner destroy 时,会解绑 observer,防止内存泄露。

二、ViewModel

官方文档:ViewModel

ViewModel 用于存储和管理和UI相关的数据,并且在配置更改时数据不会消失。

ViewModel 生命周期:

 1.1 ViewModel 怎么保存和恢复

在配置更改时,会调用 Activity#onRetainNonConfigurationInstance() 来保存保存着 ViewModel 实例的对象 mViewModelStore,并在 Activity 重建后调用 getViewModelStore(),其中会调用 ensureViewModelStore()。在它内部会调用 getLastNonConfigurationInstance() 方法获取是否有缓存的 ViewModelStore 对象,若有则返回,没有则创建新 ViewModelStore 实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值