LiveDataBusの使い方
12854 ワード
コールモード
メッセージの購読 observeライフサイクルセンシング、手動で の購読をキャンセルする必要はありません. observeForever手動で の購読をキャンセルする必要があります
メッセージの送信 setValueメインスレッドでメッセージを送信 postValueはバックグラウンドスレッドでメッセージを送信し、サブスクライバはプライマリスレッドでメッセージ を受信する.
Stickyモード
サブスクライバの登録時にStickyモードを設定することをサポートし、サブスクライバはサブスクライバの前に送信されたメッセージを受信することができる. observeStickyライフサイクルセンシング、手動で購読をキャンセルする必要はありません、Stickyモード observeStickyForever手動で購読をキャンセルする必要があります.Stickyモード
メッセージの購読
LiveDataBus.get()
.with("key_name", String.class)
.observe(this, new Observer() {
@Override
public void onChanged(@Nullable String s) {
}
});
LiveDataBus.get()
.with("key_name", String.class)
.observeForever(observer);
LiveDataBus.get()
.with("key_name", String.class)
.removeObserver(observer);
メッセージの送信
LiveDataBus.get().with("key_name").setValue(value);
LiveDataBus.get().with("key_name").postValue(value);
Stickyモード
サブスクライバの登録時にStickyモードを設定することをサポートし、サブスクライバはサブスクライバの前に送信されたメッセージを受信することができる.
LiveDataBus.get()
.with("sticky_key", String.class)
.observeSticky(this, new Observer() {
@Override
public void onChanged(@Nullable String s) {
}
});
LiveDataBus.get()
.with("sticky_key", String.class)
.observeStickyForever(observer);
LiveDataBus.get()
.with("sticky_key", String.class)
.removeObserver(observer);
public final class LiveDataBus {
private final Map> bus;
private LiveDataBus() {
bus = new HashMap<>();
}
private static class SingletonHolder {
private static final LiveDataBus DEFAULT_BUS = new LiveDataBus();
}
public static LiveDataBus get() {
return SingletonHolder.DEFAULT_BUS;
}
public synchronized BusMutableLiveData with(String key, Class type) {
if (!bus.containsKey(key)) {
bus.put(key, new BusMutableLiveData<>());
}
return (BusMutableLiveData) bus.get(key);
}
public BusMutableLiveData