日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android里巧妙實現緩存

瀏覽:206日期:2022-09-27 11:09:57

為了快速查詢會被多次調用的數據,或者構建比較廢時的實例,我們一般使用緩存的方法。緩存的基本概念大體上差不多,這里就不再重復,有興趣的可以查看維基百科的介紹。

緩存有很多的實現方式,技巧性還有坑都很多,今天我給大家介紹一些非通用的方法,可以巧妙地幫大家簡單實現一些內存緩存。

Supplier和Memoize

SQLite是Android里常用的一種數據存儲方式,在訪問數據庫數據時需要通過SQLiteOpenHelper。

一份好的數據庫連接代碼應該能解決以下幾個問題: a) 構建實例比較費資源 b) 數據庫連接最好能復用 c) onUpdate等方法在執行時不能和其他實例構成沖突。

這里可以很簡單的這樣寫

Suppliers.memoize(new Supplier<SQLiteOpenHelper>() { @Override public SQLiteOpenHelper get() { return new ...; }})

這段代碼利用了Guava提供的一些輔助方法實現Supplier和Memoize和邏輯。顧名思義,Supplier一般被用作factory,generator,builder,closure。Memoize類似于緩存這種概念,它一旦生成了一個實例,在以后的調用中都會返回同一實例,而且,線程安全。

這樣寫有幾個好處,一是需要時才去構建實例,并不會在一開始就去阻塞程序的執行,二是它很簡單的用memoize實現了緩存,保證只有一個實例生成。

代碼注入

Glow是代碼注入的重度使用者,它使我們的代碼更加結構化,清晰,簡單,同時還節省了不少的開發時間。

Dagger 2是我們實現注入的刀具,有興趣的同學應該去網站多了解一下相關的內容。除了注入,它還有一些附贈功能,而這些恰巧能被我們用來實現緩存,而且還很簡單,我們只需要額外用到幾個annotation或接口而已。

@Singleton

相信大家對這個應該比較熟悉,這可是面試時的常問問題。簡單來說,它就是單例。因為所以,用了它你不用再擔心對這些實例怎么實現緩存了吧。

@Singleton public class SingletonClass { }

@Reusable

這是一個新的很酷的功能。單例雖然很好,但有些時候實例可能有些太大,一直放在內存,又不能回收,暫時可能程序也用不到,怎么都感覺有些浪費。很多情況下,我們并沒有那么嚴格的要求需要唯一的一個實例,能重用就重用,沒有重新實例化一個就行。這就是@Reusable的使用場景,假如已有一個生成的實例,重用它就行,不行重新實例化,不需要保證。

@Reusable public class ReusableClass { }

Lazy

Lazy使用的地方和前兩者有些不同。@Singleton和@Reusable一般用在provides或類型定義的地方,但Lazy則是用在使用時,它的使用效果和最開始講到的Supplier和Memoize類似。

@Inject Lazy<SQLiteOpenHelper> lazySQLiteOpenHelper;

這里不會先生成SQLiteOpenHelper實例,直到你開始調用lazySQLiteOpenHelper.get()。而一旦第一次實例化結束,以后的調用都會返回第一次的結果。

Observable

在使用app的過程中,很多數據需要從服務器端獲取。在我們app里,每天會為用戶提供一些訂制化內容,這些內容短期內不會改變,每次從服務器端去取太過耗時,但放到數據庫或文件這些持久化存儲里似乎不太必要。綜合考慮后,似乎內存緩存是個不錯的選擇。

于是這個緩存需要提供以下功能,首先,它是個緩存,其次,它的結構需要很簡單,因為很多地方需要用到,再次,它得線程安全。

后來我們的實現方案很簡單,利用Retrofit和Observable提供的一些方法。

private static final long EXPIRE_MS = 5 * 60 * 1000; private Pair<Long, Observable<Content>>

cache; public synchronized Observable<Content> getDailyContent() { if (cache == null || cache.first + EXPIRE_MS < System.currentTimeMillis()) { cache = Pair.create(System.currentTimeMillis(), serverApi.getContent()); } return cache.second; }

這個方法的本質是利用Retrofit返回的Observable對象,然后Observable會提供一個類似緩存的cache方法,這樣在subscribe之前,這個網絡請求不會被發出,但一旦有了結果,后來的調用者都會得到同樣的結果。

注意

緩存雖好,用起來很快捷方便,但在使用過程中,大家一定要注意數據更新和線程安全,不要出現臟數據。

來自:http://www.jointforce.com/jfperiodical/article/3516

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
怡红院精品视频在线观看极品| 色一区二区三区| 久久精品一区二区不卡| 国产成人精品福利| 老司机免费视频一区二区三区| 日韩中文一区二区| 日韩av字幕| 国产探花一区| 国产精品嫩模av在线| 91精品国产自产观看在线| 欧美亚洲三区| 国产欧美日韩在线一区二区| 91免费精品国偷自产在线在线| 日本午夜精品一区二区三区电影| 日韩中文字幕不卡| 蜜臀精品久久久久久蜜臀 | 亚洲日本三级| 蜜桃一区二区三区在线| 蜜臀精品一区二区三区在线观看| 一区二区日韩免费看| 中文字幕中文字幕精品| 日本在线不卡视频一二三区| 国产色99精品9i| 精品一区二区三区亚洲 | 日韩三级一区| 噜噜噜久久亚洲精品国产品小说| 视频一区二区不卡| 亚洲精品免费观看| 欧美一区自拍| 精品一二三区| 久久人人99| 国产欧美亚洲精品a| 三级欧美韩日大片在线看| 久久不见久久见中文字幕免费| 欧美粗暴jizz性欧美20| 国产精品1区在线| 日韩av电影一区| 成人久久一区| 青青草91视频| 99精品综合| 国产精品美女午夜爽爽| 欧美激情 亚洲a∨综合| 国产不卡一区| 欧美另类中文字幕| 午夜精品久久久久久久久久蜜桃| 精品一区二区三区视频在线播放| 国产欧美一区| 尹人成人综合网| 亚洲精品乱码久久久久久蜜桃麻豆 | 精品国产不卡一区二区| 黑人精品一区| 亚洲一区二区毛片| 国产精久久一区二区| 日本 国产 欧美色综合| 亚洲成a人片| 九九久久国产| 最新国产精品| 国产亚洲毛片| 亚洲国产专区| 国产精品不卡| 国产精品成人**免费视频| 日本欧美一区| 中文字幕亚洲精品乱码| 色网在线免费观看| 亚洲日产av中文字幕| 欧美精品成人| 国产精品成人自拍| 国产乱码午夜在线视频| 欧美日韩视频免费观看| 天堂成人免费av电影一区| 97成人超碰| 精品中文一区| 久久三级毛片| 欧美在线精品一区| 国产一区二区三区不卡av| 亚洲一区成人| av一区在线| 亚洲精品无吗| 欧美成人一二区| 中文无码日韩欧| 欧美激情五月| 欧美精品黄色| 欧美成人一二区| 成人在线丰满少妇av| 国产亚洲毛片在线| 日韩**一区毛片| 91久久国产| 美女av在线免费看| 国产精品115| 日本电影久久久| 中文在线一区| av高清一区| 国产精品资源| 亚洲精品国产精品粉嫩| 亚洲免费高清| 久久亚洲成人| 国产精品www994| 日韩美女国产精品| 伊人国产精品| 国产精品美女| 欧美一区二区三区高清视频| 精品五月天堂| 国产精品久久久久久妇女| 日韩欧美美女在线观看| 欧美特黄一区| 国模 一区 二区 三区| 日韩在线二区| 红杏一区二区三区| 麻豆久久一区| 国产伦理久久久久久妇女| 日本欧美一区| 日韩1区2区3区| 伊人久久亚洲| 综合一区二区三区| 亚洲欧洲美洲国产香蕉| 香蕉久久夜色精品国产| 欧美在线亚洲| 欧美日韩黑人| 蜜桃视频欧美| 伊人精品视频| 99亚洲精品| 激情91久久| 在线视频精品| 影音先锋久久| 石原莉奈在线亚洲二区| 在线亚洲精品| 99pao成人国产永久免费视频| 黄色成人91| 三级欧美韩日大片在线看| 亚洲香蕉久久| 日本a级不卡| 国产精品九九| 国产一区调教| 亚洲人成在线网站| 欧美一区二区性| 亚洲资源av| 亚洲免费毛片| 欧美亚洲三级| 国产成人免费精品| 成人免费电影网址| 尹人成人综合网| 一本一道久久a久久| 天堂久久一区| 国产女人18毛片水真多18精品| 久久99精品久久久久久园产越南 | 激情欧美丁香| 男人天堂欧美日韩| 日韩高清电影一区| 免费在线日韩av| 日韩国产激情| 国产精品美女| 国产毛片久久久| 欧美少妇精品| 亚洲天堂黄色| 中文字幕日韩亚洲| 国产精品v亚洲精品v日韩精品| 国产成人精选| 最新国产拍偷乱拍精品| 欧美伊人久久| 亚洲天堂一区二区| 中文无码日韩欧| 牛牛精品成人免费视频| 人人香蕉久久| 日韩国产在线观看一区| 国产一区二区三区不卡视频网站| 免费久久久久久久久| 涩涩涩久久久成人精品| 精品国产中文字幕第一页| 日韩成人高清| 午夜在线观看免费一区| 久久丁香四色| 性欧美xxxx免费岛国不卡电影| 亚洲精品国产精品粉嫩| 国产伊人久久| 亚洲精选91| 国产高潮在线| 男人的天堂久久精品| 蜜桃久久久久| 亚洲欧美日韩专区| 精品国产一区二| 午夜在线观看免费一区| 久久精品国产99国产| 91精品观看| 日本成人在线不卡视频| 日韩一区电影| 青青草国产成人99久久| 亚洲高清成人| 国产精品欧美三级在线观看| 国产精品99免费看| 国产日本精品| 国产综合色产| 久久久免费人体| 噜噜噜躁狠狠躁狠狠精品视频| 精品三级在线观看视频| 日韩精品一二三| 欧洲一级精品| 国产精品宾馆| 中文精品电影| 国产中文在线播放| 日韩三级一区|