2013-07-11 80 views
1

我正在使用來自web服務的數據填充無限列表視圖。數據是作爲對從應用程序發出的POST請求的響應而獲得的。緩存這些數據的最佳做法是什麼,以便每當用戶在列表中上下滾動時都不會進行網絡呼叫? 謝謝!本地緩存Web服務響應的最佳實踐

回答

3

查看LruCache課程,或者更好地查看Google開發的Android Volley框架。

+0

你會有任何示例顯示高速緩存使用情況。例如,如何設置緩存大小。我們如何強制請求不使用緩存? –

0

爲了做到這一點,我在網絡請求層添加了一個緩存方案,以使緩存對API調用方透明。緩存每x分鐘過期一次。緩存持續使用SharedPreferences,以便在應用程序重新啓動時可用。例如,API調用可能是:

List<Item> items = server.getListItems(int page);

內getListItems()你檢查高速緩存,看看是否有一個有效的緩存。如果是這樣,則返回緩存中的項目,否則將進行網絡調用。

實際上,API是一個有點複雜,因爲它支持立即返回一個過期的緩存,然後做網絡調用和更新時,新的結果回來:

server.getListItems(int page, new ResultListener<List<Item>>() { 
    public void onResult(List<Item> items) { 
     ... 
    } 
}); 

在這個方案中,當緩存過期的onResult()會被調用兩次 - 一次是過期的緩存,一次是新的結果。

祝你好運!

+0

我列出了這個想法。你能否詳細解釋一下你的架構,並提供更多的僞代碼 –

0

嘗試Picasso。另一個強大的圖像庫,用於從廣場下載圖像和緩存。 它爲您做了一切有關緩存的事情。但是,如果您仍然使用LruCache,請考慮爲您的應用程序分配一定量的內存。否則你的應用程序將導致記憶擊中。