当前位置:网站首页>ViewModel 记录下 +
ViewModel 记录下 +
2022-08-03 06:34:00 【清风徐来辽】
特点:
- 单一职责,将数据从业务中抽离出来。即只要是界面上看的到的数据,相关变量都应该存放在ViewModel,而不是Activity中
- 生命周期长,存在于所属对象(Activity,Fragment)的全部生命周期
- 扩展性好,方便与其他功能组合,例如Livedata,room.
使用场景:
- 横竖屏切换,Activity重建,数据可依然保存
- 同一个Activity下,Fragment之间的数据共享
应用事例:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
public class BookChargeVM extends AndroidViewModel {
private MutableLiveData<Boolean> initReuslt = new MutableLiveData();
public BookChargeVM(@NonNull Application application) {
super(application);
}
public LiveData<Boolean> getInitResult() {
return this.initReuslt;
}
}
@Route(path = "/main/AndroidViewModelActivity")
public class AndroidViewModelActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_android_view_model);
AppLogUtils.i(TAG,"onCreate --------------");
this.mVM.getInitResult().observe(this, (result) -> {
AppLogUtils.i(TAG,"result ===="+result);
});
}
private BookChargeVM mVM
= (BookChargeVM) ViewModelProvider.AndroidViewModelFactory.getInstance(this.getApplication()).create(BookChargeVM.class);
}
AppLogUtils.i(TAG,"result ===="+result);
这行日志没有打出来,就是说initReuslt 未改变的情况下不会产生回调
支持协程
将 Kotlin 协程与生命周期感知型组件一起使用:https://developer.android.google.cn/topic/libraries/architecture/coroutines
参考地址
ViewModel简介:https://www.jianshu.com/p/105541cde280
ViewModel 使用及原理解析:https://blog.csdn.net/xfhy_/article/details/88703853
Android 开发者-文档-指南-ViewModel 概览:https://developer.android.google.cn/topic/libraries/architecture/viewmodel#java
边栏推荐
猜你喜欢
随机推荐
pyspark df 二次排序
postman将接口返回结果生成csv文件到本地
华为设备配置BFD与接口联动(触发与BFD联动的接口物理状态变为Down)
docker-compose部署mysql
924. 尽量减少恶意软件的传播 前缀和
Example of embedding code for continuous features
力扣解法汇总622-设计循环队列
Autowired注解与Resource注解的区别
关于任命韩文弢博士代理NOI科学委员会主席的公告
Shell脚本之一键安装mysql
unity 摄像机旋转拖拽缩放场景
【多线程进阶】--- 常见锁策略,CAS,synchronized底层工作原理,JUC,线程安全的集合类,死锁
pt-online-schema-change工具使用的一次
MySQL - 视图操作
(十五)51单片机——呼吸灯与直流电机调速(PWM)
一篇文章教你写扫雷(c语言基础版)
海思项目总结
boot - SSE
Spark 的架构与作业提交流程
多线程打印ABC(继承+进阶)