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

最新文章

  1. MS10-087微软OFFICE漏洞【参考拿机模拟】
  2. c++堆
  3. Android框架中的广播机制
  4. Android studio 多渠道打包
  5. yum 安装包的用法
  6. ftp断点续传
  7. Rabbitmq init terminating in do boot 问题
  8. C#判断网站运行状态是否正常
  9. 关于jdbc Oracle数据库连接的URL错误
  10. [Spring入门学习笔记][maven]
  11. COGS2421 [HZOI 2016]简单的Treap
  12. Jenkins部署net core小记
  13. css的再深入8(更新中&#183;&#183;&#183;)
  14. Python的二叉树实现
  15. VC++ MFC如何生成一个可串行化的类
  16. 解决android有的手机拍照后上传图片被旋转的问题
  17. MySQL--Delete语句别名+LIMIT
  18. localhost 127.0.0.1
  19. [Linux-vi] The simple set of vi command
  20. AvalonEdit验证语法并提示错误

热门文章

  1. Url 简单讲解
  2. 【BZOJ4383】[POI2015]pustynia
  3. ES6学习笔记(二十)Module 的加载实现
  4. Django模版系统
  5. Linux 程序包管理-RPM
  6. React 中组件间通信的几种方式
  7. SQL的四种语言:DDL、DML、DCL、TCL
  8. Trustie站点代码托管使用指南
  9. iOS之数据请求NSURLConnection
  10. 用DOM动态控制表格