RxJava開發文件

2021-07-31 03:22:36 字數 1980 閱讀 2753

在我們的第乙個列子裡,我們將檢索安裝的應用列表並填充recycleview的item來展示它們。我們也設想乙個下拉重新整理的功能和乙個進度條來告知使用者當前任務正在執行。

首先,我們建立observable。我們需要乙個函式來檢索安裝的應用程式列表並把它提供給我們的觀察者。我們乙個接乙個的發射這些應用程式資料,將它們分組到乙個單獨的列表中,以此來展示響應式方法的靈活性。

return observable.create(subscriber ->

string iconpath = mfilesdir + "/" + name;

if (subscriber.isunsubscribed())

}if (!subscriber.isunsubscribed())

});}

@data

@accessors(prefix = "m")

long mlastupdatetime;

string mname;

string micon;

mname = nname;

micon = icon;

mlastupdatetime = lastupdatetime;

}@override

public int compareto(object another)

}

需要重點注意的是在發射新的資料或者完成序列之前要檢測觀察者的訂閱情況。這樣的話**會更高效,因為如果沒有觀察者等待時我們就不生成沒有必要的資料項。

此時,我們可以訂閱observable並觀察它。訂閱乙個observable意味著當我們需要的資料進來時我們必須提供對應的操作來執行它。

當前的場景是什麼?我們展示乙個進度條來等待資料。當資料到來時,我們需要隱藏掉進度條,填充list,最終展示列表。現在,我們知道當一切都準備好了該做什麼。那麼錯誤的場景呢?對於錯誤這種情況,我們僅僅是用toast展示乙個錯誤的資訊。

使用butter knife,我們得到list和下拉重新整理元件的引用:

我們使用乙個下拉重新整理方法,因此列表資料可以來自初始化載入,或由使用者觸發的乙個重新整理動作。針對這兩個場景,我們用同樣的行為,因此我們把我們的觀察者放在乙個易被復用的函式裡面。下面是我們的觀察者,定義了成功、失敗、完成要做的事情:

private void refreshthelist() 

@override

public void onerror(throwable e)

@override

mrecyclerview.setvisibility(view.visible);

mswiperefreshlayout.setrefreshing(false);

}});

}

定義乙個函式使我們能夠用同樣乙個block來處理兩種場景成為了可能。當fragment載入時我們只需呼叫refreshthelist()方法並設定refreshthelist()方法作為使用者下拉這一行為所觸發的方法。

mswiperefreshlayout.setonrefreshlistener(this::refreshthelist);
我們第乙個例子現在完成了,執行跑一下。

mmx開發文件

i mmx簡介 ii mmx基本指令集 具體細節請參閱 intel 體系結構mmx技術程式設計師參考手冊 第五章 2.1 拷貝指令 movq 64位資料拷貝,如果記憶體8位對齊的話,是乙個64位寫,否則2個32位寫。movd 32位資料拷貝,注意 如果從記憶體向mmx暫存器拷貝,mmx高32位清零!...

zencart開發文件

在zencart開發中,做乙個新的功能模組時,首先要明確這個功能的流程和與原來 的關聯。然後,需要為這個功能模組取乙個名稱標識,盡量不要與原有的模組名稱不相同。zencart模組結構 1.資料庫資料表部分 2.後台管理部分 3.前台功能顯示部分 資料庫部分 zencart使用mysql數庫據,在設計...

關於開發文件

軟體開發文件是乙個軟體的支柱,是軟體開發使用和維護過程中的必備資料。它能提高軟體開發的效率,保證軟體的質量,而且在軟體的使用過程中有指導,幫助,解惑的作用,尤其在維護工作中,文件是不可或缺的資料。軟體文件可以分為開發文件和產品文件兩大類。1.1 開發文件 功能要求 於客戶要求和市場調查,是軟體開發中...