AutoCache高效能快取框架使用教程
讀者可能會問在下:
- 為什麼要使用AutoCache?
簡潔、高效能。- 現在市面上有那麼多快取的框架,像piccso等都很優秀,那筆者是不是在重複造車?
AutoCache是為那些追求輕量級快取的APP而生的。目的是讓開發者既能快速完成APP快取功能的開發,又能保證上線後效能的穩定。
AutoCache 能夠讓你高效地編寫app快取程式碼 ,保證你的資料流被安全、準確地儲存到SDcard私有目錄。參考下列核心呼叫程式碼來開始你的 AutoCache 之旅:
AutoCache.MediaCache.getInstance(context).asyncCache("url", new CallBack() {
@Override
public void onStart() {
//Run in UI thread.
}
@Override
public void save2DataBase(String cachePath) {
//Run in io thread,
//You can sava the cachPath to database or sharepreference.
}
@Override
public void onSuccess(byte[] bytes) {
//Run in UI thread.
}
@Override
public void onErro(Throwable e) {
//Run in UI thread.
}
}, FILE_TYPE, "filename");
整合方法
在Module的build.gradle檔案中新增如下依賴即可。
compile 'com.txm.topcodes.autocache:autocache:0.1.2'
呼叫方式
為方便開發者,AutoCache提供統一呼叫入口,呼叫方式十分簡潔。下面先給大家看一張思維導圖,該圖羅列了框架的主體功能及其構成。
從結構圖不難看出,AutoCache類就是呼叫框架的入口類。當我們需要從本地獲取流檔案時,呼叫方式是這樣的
AutoCache.Media.get…();
快取網路檔案時,呼叫方式是這樣的
AutoCache.MediaCache.getInstance(context).asyncCache();
快取記憶體檔案時,呼叫方式是這樣的
AutoCache.MediaCache.getInstance(context).cache();
當需要指定檔案檔案型別時,使用方式是這樣的
AutoCache.DIRECTORY_PICTURES
「如需獲取詳細資訊,請在 GitHub 的 auto-cache頁面檢視原始碼.」
檔案型別
AutoCache支援快取以下泛媒體型別:Podcasts,Pictures,Movies,Music,Documents,Download。其中Download比較特殊,用它可以指定未知的檔案型別。
使用場景
當我們的APP從網路獲取檔案流時,往往會有這樣的需求「也可能是其中之一」:
- 網路請求時,要可以自動將檔案儲存到APP本地。
- 網路請求時,將網路圖片的本地路徑儲存到SQLite或其它資料持久化中,以方便邏輯處理。
- 網路請求時,直接使用從網路獲取到檔案流。
- 網路請求時,方便新增進度條功能。
- 網路請求時,全域性捕獲異常。
- 本次請求之後,根據檔名、檔案型別從本地獲取檔案流。
對於需求1。AutoCache完全是在後臺IO執行緒中完成的,不需要呼叫者主動去操作。
IO執行緒:I/O 操作(讀寫檔案、讀寫資料庫、網路資訊互動等)所使用的 Scheduler。行為模式和 newThread() 差不多,區別在於 io() 的內部實現是是用一個無數量上限的執行緒池,可以重用空閒的執行緒,因此多數情況下 io執行緒比Thread執行緒更有效率。
對於需求2。save2DataBase(String cachePath)回撥方法自動就被指定在IO執行緒中執行。「所以,save2DataBase既是一個非阻塞的方法,又具備IO執行緒的高效性。」
對於需求3。onSuccess(byte[] bytes)回撥方法被指定自動執行在UI執行緒中。
對於需求4。AutoCache提供了onstart()回撥方法作為呼叫開始的標誌,onSuccess(byte[] bytes)或onErro(Throwable e)作為呼叫結束點。
對於需求5。全域性捕獲異常指的是:onErro(Throwable e)不僅可以捕獲網路異常、本地快取媒體時發生的異常,而且還可以捕獲發生在onStart、save2DataBase、onSuccess中的異常。
對於需求6。AutoCache.Media類提供了4種同步方式來獲取本地的媒體流。
最佳實踐
防止OOM
AutoCache.Media類中提供了getSoftBmp(),getWeakBmp(),getBmp(),getFile()四種方式來獲取流。如果是圖片檔案,筆者建議使用前兩種方式,具體可參考善於利用軟引用和弱引用。
定製回撥方法
AutoCache框架提供了CallBackAdapter介面用於替換CallBack介面。可以通過它實現自由定製自己需要的回撥方法。「這樣是為了程式碼看上去簡潔。」
AutoCache.MediaCache.getInstance(context).asyncCache("url", new CallBackAdapter() {
@Override
public void save2DataBase(String cachePath) {
}
@Override
public void onSuccess(byte[] bytes) {
}
//you can add other callback function here.
},FILE_TYPE,"filename");
FAQ
我發現AutoCache還存在BUG?
AutoCache是一個完全開源的框架,如果您在使用過程中發現問題,請在GitHub建立一個問題。
我是Eclipse使用者,可以使用AutoCache麼?
不可以。
AutoCache用到了哪些第三方框架?
是的。AutoCache是在RXjava+Okhttp基礎之上封裝的一個輕量級快取框架。
AutoCache提供快取檔案路徑到SQLite資料庫的方法了嗎?
沒有。AutoCache快取的重心是將流檔案快取到本地目錄。如果需要將檔案路徑快取到SQLite或其他持久化資料層中,開發者需要自行在save2DataBase(cachePath)回撥方法中實現邏輯。
我在android studio中連結AutoCache庫失敗了?
確保您的工程使用的遠端倉庫為jcenter。
allprojects {
repositories {
jcenter()
}
}
--------------我是一條萌萌噠的分割線,表示教程結束----------------
相關文章
- Java高效能本地快取框架CaffeineJava快取框架
- EhCache快取使用教程快取
- CQengine高效能記憶體資料快取查詢框架記憶體快取框架
- 快取、快取演算法和快取框架簡介快取演算法框架
- 快取框架積累快取框架
- Spring Boot:簡單使用EhCache快取框架Spring Boot快取框架
- (轉)在Spring框架中使用OSCache快取Spring框架快取
- 高效能記憶體快取 ristretto記憶體快取
- [譯] 高效能 Java 快取庫 — CaffeineJava快取
- 使用Java和Redis構建高效能的快取系統JavaRedis快取
- MyBatis框架原理3:快取MyBatis框架快取
- Spring Cache快取框架Spring快取框架
- 高效能快取 Caffeine 原理及實戰快取
- Spring Boot基礎教程:EhCache快取的使用Spring Boot快取
- Nginx快取設定教程Nginx快取
- nginx反向代理快取教程。Nginx快取
- JdonSD框架使用快取提升效能出具測試報告:框架快取測試報告
- Spring 框架快取註解Spring框架快取
- go語言高效能快取元件ccache分析Go快取元件
- Nginx 快取使用官方教程及常見問題解答Nginx快取
- 分散式快取基礎教程分散式快取
- 開源高效能 web 快取伺服器 nusterWeb快取伺服器
- 高效能快取伺服器 nuster 1.7.9.7 釋出快取伺服器
- 高效能快取伺服器 nuster 1.7.9.9 釋出快取伺服器
- 高效能快取伺服器 nuster 1.7.9.8 釋出快取伺服器
- nginx快取使用詳解,nginx快取使用及配置步驟Nginx快取
- 基於HAProxy的高效能HTTP快取伺服器和RESTful NoSQL快取伺服器HTTP快取伺服器RESTSQL
- 基於HAProxy的高效能HTTP快取伺服器和RESTful NoSQL快取伺服器。HTTP快取伺服器RESTSQL
- 如何使用 Redis 快取Redis快取
- Laravel使用Redis快取LaravelRedis快取
- jetcache快取使用快取
- [譯]高效能快取庫Caffeine介紹及實踐快取
- 高效能 Web 快取伺服器 nuster 1.7.9.5 釋出Web快取伺服器
- 高效能 Web 快取伺服器 nuster 1.7.9.6 釋出Web快取伺服器
- Util應用框架基礎(七) - 快取框架快取
- 我的圖片四級快取框架快取框架
- Android圖片快取框架GlideAndroid快取框架IDE
- Cacheonix:Java分散式叢集快取框架Java分散式快取框架