JetPack 初體驗(yàn)

1.聽到這個(gè)概念就開始搜索相關(guān)文章,看了好久總覺得不得勁,后來翻到官網(wǎng)的介紹看的很痛苦(英語渣沒辦法),看了個(gè)大概終于下定決心把官方的todoapp下載下來學(xué)習(xí)了好久好久,看的略懵,磕磕絆絆看懂了一部分,然后看到郭霖大神的coolweatherjetpack(https://github.com/guolindev/coolweatherjetpack),然后下下來準(zhǔn)備膜拜,結(jié)果發(fā)現(xiàn)是kotlin版的看的半臉懵逼,于是決定對(duì)著練習(xí)敲個(gè)java版的出來??偹闶谴蟾趴炊嘶就娣?br> 大概說一下官網(wǎng)的一個(gè)鍋,為了出現(xiàn)這個(gè)界面我下來3個(gè)androidstudio然而并沒有

image.png

后來不經(jīng)意間看到了這個(gè)


image.png

2.閑話不多說直接上
①開始的開始是在界面獲取ViewModel

//Activity下
mViewModel = ViewModelProviders.of(this).get(TasksViewModel.class);
//fragment下,此處context需要和activity的一致才能獲取到同一各viewModel對(duì)象
mViewModel = ViewModelProviders.of(getActivity()).get(TasksViewModel.class);

②然后就是ViewModel中處理獲取數(shù)據(jù)發(fā)送數(shù)據(jù)的邏輯,此處就該介紹下一個(gè)主角LiveData,主要通過liveData.setValue()、liveData.postValue()傳數(shù)據(jù)、liveData.observe()的回調(diào)方法收到傳來的數(shù)據(jù)顯示出來。

//Activity處理數(shù)據(jù)
mViewModel.getOpenTaskEvent().observe(this, new Observer<Event<String>>() {
            @Override
            public void onChanged(@Nullable Event<String> stringEvent) {
                Toast.makeText(TasksActivity.this, stringEvent.getContentIfNotHandled(), Toast.LENGTH_SHORT).show();
            }
        });

public class TasksViewModel extends ViewModel {
    private final MutableLiveData<Event<String>> mOpenTaskEvent = new MutableLiveData<>();
    private final MutableLiveData<Event<List<String>>> mOpenTaskEvent2 = new MutableLiveData<>();

    public LiveData<Event<String>> getOpenTaskEvent() {
        return mOpenTaskEvent;
    }
    //調(diào)用 setValue 方法,Observer 的 onChanged 方法會(huì)在調(diào)用 serValue 方法的線程回調(diào)。而postValue 方法,Observer 的 onChanged 方法將會(huì)在主線程回調(diào)
    void openTask(String taskId) {
        mOpenTaskEvent.setValue(new Event<>(taskId));
    }

    void save(List<String> list){
        mOpenTaskEvent2.postValue(new Event<List<String>>(list));
    }
}

看懂了這些大概就能上手找項(xiàng)目開敲了,敲完就大概能知道怎么玩了

3.上Demo,請(qǐng)求天氣這塊有點(diǎn)小問題,不影響jetpack的學(xué)習(xí),個(gè)人建議直接去看郭大神的kotlin版+java普通版的coolweather,沒事敲幾行,膜拜大佬...https://github.com/ChenLeizheng/MvvmTest.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容