編輯:關於android開發
1.三級緩存設計步驟:
* 從內存中取圖片
* 從本地文件中取圖片
向內存中保持一份
* 請求網絡圖片,獲取圖片,顯示到控件上
* 向內存存一份
* 向本地文件中存一份
2.網絡緩存
線程池類Executors的使用
public static ExecutorService newCachedThreadPool()
創建一個可根據需要創建新線程的線程池,但是在以前構造的線程可用時將重用它們。對於執行很多短期異步任務的程序而言,這些線程池通常可提高程序性能。調用 execute 將重用以前構造的線程(如果線程可用)。如果現有線程沒有可用的,則創建一個新線程並添加到池中。終止並從緩存中移除那些已有 60 秒鐘未被使用的線程。因此,長時間保持空閒的線程池不會使用任何資源。注意,可以使用 ThreadPoolExecutor 構造方法創建具有類似屬性但細節不同(例如超時參數)的線程池。
public static ExecutorService newFixedThreadPool(int nThreads)
創建一個可重用固定線程數的線程池,以共享的無界隊列方式來運行這些線程。在任意點,在大多數 nThreads 線程會處於處理任務的活動狀態。如果在所有線程處於活動狀態時提交附加任務,則在有可用線程之前,附加任務將在隊列中等待。如果在關閉前的執行期間由於失敗而導致任何線程終止,那麼一個新線程將代替它執行後續的任務(如果需要)。在某個線程被顯式地關閉之前,池中的線程將一直存在。
3.本地緩存
File file = new File(CACHE_DIR, fileName); FileInputStream FileOutputStream 文件讀寫方式
演示把圖片移除後,在查看
C:\Users\Administrator>adb shell
# cd /mnt/sdcard/atguigu_beijingnews
cd /mnt/sdcard/atguigu_beijingnews
# rm *
rm *
4.內存緩存
引用級別
我們經常會使用一種非常流行的內存緩存技術的實現,即軟引用或弱引用 (SoftReference or WeakReference)。
但是現在已經不再推薦使用這種方式了,因為從 Android 2.3 (API Level 9)開始,垃圾回收器會更傾向於回收持有軟引用或弱引用的對象;
另外,Android 3.0 (API Level 11)中,圖片的數據會存儲在本地的內存當中,因而無法用一種可預見的方式將其釋放,
這就有潛在的風險造成應用程序的內存溢出並崩潰。所以看到還有很多相關文章還在推薦用軟引用或弱引用 (SoftReference or WeakReference),就有點out了
Android3.0後提出新的方式
LruCache 緩存的集合,把常用的數據,保留起來,把不常用的給回收。
Lru近期最少使用算法
硅谷社交15--群詳情,硅谷社交15-- 1)頁面布局 <?xml version=1.0 encoding=utf-8?> <LinearLayou
Mac下載安裝Android Studio教程,androidstudio 今天把公司閒置的一台Mac-mini重裝了下系統感覺用著速度還不錯,平時上班用的機器USB有
Android文件下載之進度檢測,android文件下載 近期因為項目的需要,研究了一下Android文件下載進度顯示的功能實現,接下來就和大家一起分享學習一下,希望對
Android性能優化之Bitmap的內存優化 1、BitmapFactory解析Bitmap的原理 BitmapFactory提供的解析Bitmap的靜態工廠方法有