溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android三種緩存策略分別是什么

發(fā)布時(shí)間:2022-01-07 19:21:34 來源:億速云 閱讀:327 作者:柒染 欄目:開發(fā)技術(shù)

這篇文章給大家介紹Android三種緩存策略分別是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

這里寫一些實(shí)際比較實(shí)用的緩存技術(shù),有待驗(yàn)證哦,請想用的童鞋試試再說哈!

目前很多商業(yè)應(yīng)用都會涉及到從網(wǎng)絡(luò)上讀取圖片數(shù)據(jù)的問題,為了節(jié)約用戶流量,應(yīng)用一般會將圖片緩存起來。圖片緩存一般分為內(nèi)存緩存和外存緩存。內(nèi)存緩存運(yùn)用java的緩存機(jī)制,在程序完全退出后,緩存所在的內(nèi)存空間可能被其它應(yīng)用程序占用從而丟失。外存緩存一般放在程序特有的訪問空間或者sd卡中,在sd卡中存放的資源為公有資源,其它程序也可以訪問,且對用戶來講沒有一個(gè)強(qiáng)制清除緩存的規(guī)范機(jī)制。綜合以上,本文采用將緩存圖片放置在程序的特有空間中, 其它應(yīng)用程序無法訪問,且用戶可以在應(yīng)用程序管理中的"清除數(shù)據(jù)"選項(xiàng)中清除緩存。

本文提供三種緩存策略:(1)LRU算法,固定緩存圖片數(shù)量(max_num),當(dāng)圖片數(shù)量超出max_num時(shí),將緩存中最近用的最少的圖片刪除。(2)FTU算法,固定每張圖片的緩存時(shí)限,以最后一次使用算起,超過時(shí)限后刪除。(3)FMU算法,在存儲器中固定一定大小的存儲空間,超過固定空間后將緩存中占用最大尺寸的圖片刪除。使用時(shí)只需要向方法體中傳遞圖片的URL即可。


使用方法:

1.導(dǎo)入jar;

2. 獲取服務(wù);

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;
}


關(guān)于Android三種緩存策略分別是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI