自定义LiveData解决粘性事件,非Hook版本
作者:
大虾啊啊啊 | 来源:发表于
2022-05-28 12:02 被阅读0次package com.example.test3;
import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
/**
* 非粘性的LiveData
*
* @param <T>
*/
public class UnPeekLiveData<T> extends MutableLiveData<T> {
private int mVersion = 0;//被观察者的版本
private int observerVersion = 0;//观察者的版本
@Override
public void observe(@NonNull LifecycleOwner owner, @NonNull Observer<? super T> observer) {
//每次订阅的时候,先把版本同步
observerVersion = mVersion;
super.observe(owner, new Observer<T>() {
@Override
public void onChanged(T t) {
if (mVersion != observerVersion) {
observer.onChanged(t);
}
}
});
}
@MainThread
public void setValue(T value) {
mVersion++;
super.setValue(value);
}
}
本文标题:自定义LiveData解决粘性事件,非Hook版本
本文链接:https://www.haomeiwen.com/subject/jpyiprtx.html
网友评论