我正在考慮使用無限列表(Recyclerview或Listview)以及由ArrayList提供的數據。 (Object-a model class)在無限的情況下內存處理的概念
所以對於無限列表,Arraylist的大小會增加,列表佔用的內存也會增加。那麼,應用程序將如何運作,它是否會創建內存不足異常或不會掛起。
我只是想知道對此有效的概念,如果它創建異常 - 讓我知道我們該如何處理它。
我正在考慮使用無限列表(Recyclerview或Listview)以及由ArrayList提供的數據。 (Object-a model class)在無限的情況下內存處理的概念
所以對於無限列表,Arraylist的大小會增加,列表佔用的內存也會增加。那麼,應用程序將如何運作,它是否會創建內存不足異常或不會掛起。
我只是想知道對此有效的概念,如果它創建異常 - 讓我知道我們該如何處理它。
您的應用程序很可能會拋出OOM異常,處理它的方法如下:
try {
// fill your infinite list as you want
} catch (OutOfMemoryError E) {
//release some/all objects from your list, f.e., the first 100 ones or so
}
我希望它能幫助。
在嘗試將其加載到回收站視圖中之前,檢查獲取的內存列表是否小於可用內存。因此,處理OutOfMemoryException的最有效方法是以這樣的方式構建您的應用程序,即它不會嘗試將大量數據加載到內存中以避免發生異常。
我不列出你正在使用的項目超過500或1000的項目,所以你不必擔心,因爲它會在你的內存緩存中。但是當您在回收站視圖中加載圖像時出現實際問題,並且您需要持續回收您的視圖。
此外,在應用程序類你正在回調,當你沒有足夠的內存
@Override
public void onLowMemory() {
super.onLowMemory();
}
請讓我知道,如果你還有什麼疑問。
準確地說,ArrayList無限意味着Integer.MAX_VALUE - 8 – Blackbelt
如果你使用一個沒有限制的集合(參見Blackbeld評論),無限將始終引發一個'OutOfMemoryError',因爲內存是有限的。您需要清除一些未使用/看不見的值。 – AxelH