【安卓进阶】LiveData
2024-08-26 13:15:05
最近参与到后端的工作中,虽然以前在工作中使用过PHP,但是这次使用的是Java,开发思路和方式有所不同。后端开发中,做接口也是需要处理大量的业务逻辑关系,同时一些事务之类的技术因素也要考虑好,在架设项目的时候就已经考虑好手动控制事务,Dao与Service层的方法都有Connection对象传入,用作事务控制。数据库连接池也是很重要,不然每次重新获取数据库连接对象也是一个耗时操作,数据库连接池使用c3p0。
LiveData简介
LiveData是Jetpack的Architecture部分的一个类,它是一个数据容器。简单来说,他是一个泛型类,能在内部持有一个泛型类型对象的实例,可以对其添加监听器,当我们调用更新数据的方法,所有的监听器都能收到回调。
听起来好像没什么特点,但是先来看看LiveData的最优秀的两个特性。
1. 添加的监听器自动绑定生命周期,当Activity、Fargment的生命周期结束的时候,LiveData对象自动销毁监听器。
2.当绑定的生命周期进入暂停的时候,监听器不会收到回调,当生命周期重新进入的时候,监听器会再次收到回调。
MutableLiveData
MutableLiveData是实现了LiveData抽象类的类,其实并没有增加任何功能。
public class MutableLiveData<T> extends LiveData<T> { @Override public void postValue(T value) { super.postValue(value); } @Override public void setValue(T value) { super.setValue(value); } }
添加监听器
添加监听器目的就是为了随时获取最新值变化的回调,下面看看代码示例。
MutableLiveData<String> liveData = new MutableLiveData<>(); liveData.observe(mFragment, new Observer<String>() { @Override public void onChanged(@Nullable String o) { Log.e("LiveData:", o); } });
LiveData.observe(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer)方法需要LifecycleOwner是接口实例参数,Fragment、Activity已经实现此接口。
更新数据
当我们添加了监听器,任何时候我们可以更新LiveData里面的数据,其他监听器就会收到回调。
// 在主线程中使用 void setValue (T value) // 在工作线程中使用 void postValue (T value)
最新文章
- spring+mybatis多数据源动态切换
- datatables中的Options总结(2)
- javascript 实现des解密加密
- 基于redis和docker的guestbook留言簿案例
- 微信JS SDK Demo 官方案例[转]
- linux 目录下文件批量植入和删除,按日期打包
- iOS7模拟器安装
- SqlServer索引及优化详解
- 响应式SharePoint模版页
- NOIP201103瑞士轮
- Javascript 笔记与总结(2-11)暴力操作节点
- 免费api大全(更新中)
- Hand 3D Pose Estimation
- iOS 学习笔记 一 (2015.02.05)
- iOS webview加载html自定义选项框选词
- 三星智能手机如何运用Smart Switch?
- hdu 5256 序列变换(LIS最长上升子序列)
- 【网络协议】TCP交互数据流和数据流成块
- Jenkins中deploy插件的deploy war/ear to a container与deploy artifacts to maven reepository区别
- Java虚拟机的锁优化