您好,登錄后才能下訂單哦!
這篇文章給大家介紹Android三種緩存策略分別是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
這里寫一些實際比較實用的緩存技術,有待驗證哦,請想用的童鞋試試再說哈! 目前很多商業應用都會涉及到從網絡上讀取圖片數據的問題,為了節約用戶流量,應用一般會將圖片緩存起來。圖片緩存一般分為內存緩存和外存緩存。內存緩存運用java的緩存機制,在程序完全退出后,緩存所在的內存空間可能被其它應用程序占用從而丟失。外存緩存一般放在程序特有的訪問空間或者sd卡中,在sd卡中存放的資源為公有資源,其它程序也可以訪問,且對用戶來講沒有一個強制清除緩存的規范機制。綜合以上,本文采用將緩存圖片放置在程序的特有空間中, 其它應用程序無法訪問,且用戶可以在應用程序管理中的"清除數據"選項中清除緩存。本文提供三種緩存策略:(1)LRU算法,固定緩存圖片數量(max_num),當圖片數量超出max_num時,將緩存中最近用的最少的圖片刪除。(2)FTU算法,固定每張圖片的緩存時限,以最后一次使用算起,超過時限后刪除。(3)FMU算法,在存儲器中固定一定大小的存儲空間,超過固定空間后將緩存中占用最大尺寸的圖片刪除。使用時只需要向方法體中傳遞圖片的URL即可。 使用方法: 1.導入jar; 2. 獲取服務; 3.提交url,交給程序去判斷是否下載。 public class ImagecachetacticsdemoActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.item); /*FMU*/ p_w_picpathCacheManager = ImageCacheManager.getImageCacheService(this, ImageCacheManager.MODE_FIXED_MEMORY_USED, "memory"); p_w_picpathCacheManager.setMax_Memory(1024 * 1024); /*FTU*/ // p_w_picpathCacheManager = ImageCacheManager.getImageCacheService(this, // ImageCacheManager.MODE_FIXED_TIMED_USED, "time"); // p_w_picpathCacheManager.setDelay_millisecond(3 * 60 * 1000); /*LRU*/ // p_w_picpathCacheManager = ImageCacheManager.getImageCacheService(this, // ImageCacheManager.MODE_LEAST_RECENTLY_USED, "num"); // p_w_picpathCacheManager.setMax_num(5); // p_w_picpathCacheManager = ImageCacheManager.getImageCacheService(this, // ImageCacheManager.MODE_NO_CACHE_USED, "nocache"); mImageView = (ImageView) findViewById(R.id.p_w_picpathView); new DownloadTask() .execute("http://www.touxiang99.com/uploads/allimg/110417/1_110417112640_2.jpg"); } private class DownloadTask extends AsyncTask<String, Void, Bitmap> { @Override protected Bitmap doInString... params) { try { return p_w_picpathCacheManager.downlaodImage(new URL(params[0])); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Bitmap result) { mImageView.setImageBitmap(result); super.onPostExecute(result); } @Override protected void onPreExecute() { mImageView.setImageResource(R.drawable.ic_launcher); super.onPreExecute(); } } private ImageView mImageView; private ImageCacheManager p_w_picpathCacheManager; } |
關于Android三種緩存策略分別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。