android內存釋放處理


不知道大家對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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM