LiveDataBus是一個用于實現跨組件通信的工具類,它利用LiveData和觀察者模式來實現組件之間的通信。具體實現步驟如下:
public class LiveDataBus {
private static final SparseArray<LiveData<Object>> bus = new SparseArray<>();
public static <T> LiveData<T> getChannel(int channelId) {
if (bus.get(channelId) == null) {
bus.put(channelId, new MutableLiveData<>());
}
return (LiveData<T>) bus.get(channelId);
}
public static void sendChannel(int channelId, Object data) {
bus.get(channelId).setValue(data);
}
}
LiveDataBus.getChannel<String>(CHANNEL_ID).observe(this, new Observer<String>() {
@Override
public void onChanged(String data) {
// 處理收到的數據
}
});
LiveDataBus.sendChannel(CHANNEL_ID, "Hello, LiveDataBus!");
通過以上步驟,我們就可以實現組件之間的跨通信。LiveDataBus的優點是使用簡單、線程安全,并且支持多個頻道的通信,能夠滿足不同組件之間的通信需求。