標籤:handler 玩遊戲 span mod 重複 記憶體釋放 想去 應該 getchild
不知道大家對android記憶體釋放都做什麼樣的處理,本人接觸android不久,近期開發小遊戲的過程中,由於遊戲介面組件較多。剛玩遊戲的時候感覺還好,可是重複進入遊戲介面玩幾次之後,遊戲就會卡頓,我瞬間就無語了,想來想去。還是記憶體佔用沒有得到釋放,經過一番學習,儘管沒有全然找到根源。可是已經緩解了非常多,在這裡說說我是怎麼處理的吧,然後要是大家有自己好的處理方法,希望能夠拿出來分享。這樣大家就能一起進步了。
接下來是我的一些做法:
首先,大多數佔用記憶體的東西我知道的有(一般釋放資源我都在onDestroy()裡面做處理):
1.圖片資源;
2.list佔用。
3.數組佔用;
4.其它一些定義的方法的佔用;
5.線程回調,線程沒有關閉問題。
面對這些問題,我分別採用的方法是:
1.圖片資源回收
private void recycleBitmap( )
{
if(viewGroup != null)
{
int count = viewGroup.getChildCount;
for(int i=0; i <count; i++ )
{
View view = viewGroup.getChildAt(i);
ImageView img = (ImageView)view.findViewById(R.id.Image);
if(img != null)
{
Drawable drawable = img.getDrawable( );
if(drawable != null)
{
if(drawable instanceof BitmapDrawable)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable)drawable;
Bitmap bitmap = bitmapDrawable.getBitmap( );
if(bitmap != null)
bitmap.recycle( );
}
}
}
}
}
}
關於圖片佔用記憶體的釋放,假設是一些遊戲引擎之類的。應該有相應的clear方法,在結束一個介面的時候能夠調用相應方法釋放記憶體。
2.list佔用:
方法:list.clear();然後在制空,不知道有沒有這個必要,可是也就一句話,並且也沒有異常。所以就順便了。
3.數組佔用:
方法:用完之後沒實用了就制空。
4.其它一些定義的方法的佔用:
方法:直接制空。假設方法內部有一些list或者數組之類的。我的處理方法是在定義的方法裡面再定義一個釋放資源的方法。然後在要釋放資源的時候調用那個方法釋放方法內部資料,在對其制空。
5.線程回調,線程沒有關閉問題:
方法:移除回調mHandler.removeCallbacks(mMethod);
android記憶體釋放處理