zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    最详细易懂的CRC-16校验原理(附源程序)
    咳嗽秘方
    三十年前三十年后
    车载导航系统中常用物理量和单位
    mssql 中文乱码 字库集 问题解决方法
    CuteEditor.Editor+a+a+c+a+a.a() System.RuntimeType.get_Assembly() 问题解决方法
    .NET Framework 4.5 五个很棒的特性
    很管用的治咳嗽秘方
    python 使用pip install 手动安装本地包的方法
    Facebook支持python的开源预测工具Prophet
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6978612.html
Copyright © 2011-2022 走看看