安卓进阶LiveData

行是知之始,知是行之成。这篇文章主要讲述安卓进阶LiveData相关的知识,希望能为你提供帮助。
最近参与到后端的工作中,虽然以前在工作中使用过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 = https://www.songbingjia.com/android/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)

【安卓进阶LiveData】 

    推荐阅读