2013-04-02 112 views
1

我試圖在內存緩存中存儲一​​個視頻,視頻完成後它將從緩存中刪除。在播放過程中,無法從緩存中刪除視頻文件。Android中的內存緩存

+0

什麼是你想怎麼辦?緩存bitamps? – Raghunandan

+0

由問題2,看看:http://stackoverflow.com/questions/10977288/clear-application-cache-on-exit-in-android – Castiblanco

+0

你必須更好地解釋你的問題。你想緩存什麼?位圖?文件?交易? JSON?你想在哪裏緩存它:在RAM內存還是永久性的? – Budius

回答

9

每個Android應用程序都有自己有限的內存

// Get max available VM memory, exceeding this amount will throw an 
// OutOfMemory exception. 
final int maxMemory = (int) (Runtime.getRuntime().maxMemory()/1024); 

// Use 1/8th of the available memory for this memory cache. 
final int cacheSize = maxMemory/8; 

在一個普通的設備,這是一個最低限度的約4 MB(32/8) 每個應用程序分配32 MB。

在具有800x480分辨率的設備上充滿圖像的全屏網格視圖將使用大約1.5MB(800 * 480 * 4字節)。 800 * 480 * 4 =實際圖片尺寸

這會在內存中緩存大約2.5頁圖片的最少數量.ie在您的網格視圖中,只有2.5張圖片存儲在緩存中......當您向上和向下滾動時到2.5圖像,它從緩存中獲取圖像...當用戶移動到第3或第4個圖像時。前兩個圖像緩存被清除,新的下載圖像緩存。

緩存機制主要用於平滑滾動網格視圖列表中的圖像。

機制: 在列表或網格視圖中,第一張圖像從網絡下載並在用戶向下滾動時存儲在緩存中。當用戶向上滾動時,如果圖像可用,則從緩存中提取圖像。

Android採用兩種一種機制:

1.LRU緩存(內部應用程序的內存使用) 2.Disk緩存(使用SD卡存儲)

磁盤緩存的代碼是從Android操作系統拉。 這將有限的數據存儲在SD卡中。當插入數據超過時,最近最少使用的文件被刪除並存儲新文件。

ex: Facebook Android使用磁盤緩存。

緩存內存在應用程序級別或設置>管理應用程序>應用程序名稱中清除。

每個應用程序都有其自己的高速緩存,一個應用程序無法訪問其他應用程序的高速緩存存儲器..

欲瞭解更多信息,請訪問:

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html#disk-cache