Android-Jetpack

浅谈 LiveData

2019-12-27  本文已影响0人  程序员阿兵

引言 :

定义:

简单地说,LiveData是一个数据持有类。它具有以下特点:

为什么需要LiveData

从LiveData具有的特点,我们就能联想到它能够解决我们遇到的什么问题。LiveData具有以下优点:

下面演示liveData 的使用方式:

  1. 封装 LiveDataButs
/**
 * @author 桂雁彬
 * @date 2019-12-12.
 * GitHub:
 * email:guiyanbing@100tal.com
 * description:liveData 事件总线
 */
public class LiveDataBus {
    private Map<String, MutableLiveData<Object>> bus;
    private static LiveDataBus instance=new LiveDataBus();
    private LiveDataBus(){
        bus=new HashMap<>();
    }
    public static LiveDataBus get(){
        return instance ;
    }

    public <T>MutableLiveData<T> getChannel(String target,Class<T> type){
        if (!bus.containsKey(target)){
            bus.put(target,new MutableLiveData<Object>());
        }
        return (MutableLiveData<T>)bus.get(target);
    }


    public MutableLiveData<Object> getChannel(String target) {
        return getChannel(target, Object.class);
    }
}

  1. liveData 的使用
   @Override
    protected void loadData() {
        //注册监听
        LiveDataBus.get().getChannel("target",String.class).observe(this, s -> {
        });
    }

    /**
     * 发送事件
     */
    private void postValue(){
        LiveDataBus.get().getChannel("target").postValue("发送了一个事件");
    }

上面分别为监听标签为target的事件 ,发送标签为target 的事件。

上一篇 下一篇

猜你喜欢

热点阅读