第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在多個活動中將LiveData替換為EventBus

在多個活動中將LiveData替換為EventBus

郎朗坤 2021-05-07 08:42:50
目前,我的項(xiàng)目使用EventBus發(fā)布事件,而我正在嘗試用EventBus替換LiveData。從理論上講,它們的工作方式相似。我一開始就毫不費(fèi)力地遷移了。但這是我不知道如何處理的情況。這是場景。LaunchActivity-> PersonInfoActivity-> UpdateInfoActivity當(dāng)前,我們使用EventBus在LaunchActivity和PersonInfoActivity中訂閱UserInfoEventLaunchActivity.javapublic class LaunchActivity{     @Subscribe(threadMode = ThreadMode.MAIN)     public void onEvent(UserInfoEvent event){     }}PersonInfoActivity.javapublic class PersonInfoActivity{     @Subscribe(threadMode = ThreadMode.MAIN)     public void onEvent(UserInfoEvent event){     }}UpdateInfoActivity.javapublic class UpdateInfoActivity{     public void onSubmit(){          EventBus.getDefault().post(new UserInfoEvent());     }}問題是,我想用LiveData代替這種情況我做了什么?我已經(jīng)閱讀了有關(guān)livedata Room的單例用法的問題-更新數(shù)據(jù)庫時,LiveData觀察器不會觸發(fā),我想嘗試使用相同的方式,但是沒有運(yùn)氣。每當(dāng)onChanged()我開始活動時,事件都會觸發(fā)
查看完整描述

3 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個贊

您可以使用viewModel實(shí)現(xiàn)來實(shí)現(xiàn)。喜歡,


public class UserViewModel extends AndroidViewModel {

private UserRepository userRepository;

private LiveData<List<UserData>> getUser;


public UserViewModel(@NonNull Application application) {

    super(application);

    userRepository = new UserRepository(application);

    getUser= userRepository.getUser();

}



public LiveData<List<UserData>> getUser() {

    return getUser;

}

}

創(chuàng)建此類后,請更新您的PersonalInfoActivity和LaunchActivity,


private UserViewModel userViewModel;


    userViewModel.getUser().observe(this, new Observer<List<UserData>>() {

    @Override

public void onChanged(@Nullable final List<UserData> user) {

//write code to set data of user to show using list of user

}

});

如果您對此有任何疑問,請離開commnet。


查看完整回答
反對 回復(fù) 2021-05-19
?
RISEBY

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個贊

我認(rèn)為對LiveData有一些誤解。你可以在這里看看

它可能會對您有所幫助。此外,您還可以使用LiveData和LiveData事件總線來檢查此事件總線的實(shí)現(xiàn)。

希望能幫助到你?。。?/p>


查看完整回答
反對 回復(fù) 2021-05-19
?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊

我在本教程中創(chuàng)建了一個名為LivedataBus的庫 。您可以像這樣使用它:


 //Subscribe

 LiveDataBus.subscribe("event_name", this, Observer {

        it.runAndConsume {

            Toast.makeText(this, "Hello ${it.value}", Toast.LENGTH_LONG).show()

        }

    })


 //Publish

 val obj = SomeEvent()

 LiveDataBus.publish("event_name", ConsumableEvent(value = obj))

神奇之處在于,我使用了ConsumableEvent,可以在觸發(fā)事件后使用它,以防止從靜態(tài)總線獲取最新數(shù)據(jù)。

我在當(dāng)前項(xiàng)目中使用了它,并且在多個活動和片段上都可以很好地工作。該庫的好處是它可以在Livedata上運(yùn)行,而您無需關(guān)心活動或片段生命周期。


查看完整回答
反對 回復(fù) 2021-05-19
  • 3 回答
  • 0 關(guān)注
  • 325 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號