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);
android内存释放处理的更多相关文章
- Android 内存管理 &Memory Leak & OOM 分析
转载博客:http://blog.csdn.net/vshuang/article/details/39647167 1.Android 进程管理&内存 Android主要应用在嵌入式设备当中 ...
- 【转载】Android内存泄露
相信一步步走过来的Android从业者,每个人都会遇到OOM的情况.如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力.今天我们就谈谈在Android平台下内存的管理之道,开始今 ...
- Android 内存泄漏总结
内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题.内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收 ...
- Android 内存优化 (防Memory Leak)
在之前的 Android 内存管理 &Memory Leak & OOM 分析 中,说到了Android的内存管理相关的原理,也能了解到Android Memory Leak 和 ...
- Android内存管理机制
相信一步步走过来的Android从业者,每个人都会遇到OOM的情况.如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力. 今天我们就谈谈在Android平台下内存的管理之道,开始 ...
- Android内存泄漏问题(一)
前言 不少人认为JAVA程序,因为有垃圾回收机制,应该没有内存泄露. 其实如果我们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用, ...
- Android内存管理之道
相信一步步走过来的Android从业者,每个人都会遇到OOM的情况.如何避免和防范OOM的出现,对于每一个程序员来说确实是一门必不可少的能力.今天我们就谈谈在Android平台下内存的管理之道,开始今 ...
- 大礼包!ANDROID内存优化(大汇总)
写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在A ...
- android 内存优化以及性能优化相关问题
最近做一个android 的应用程序 总是出现内存高 和cpu高的问题困扰了好多天. 下面为自己从网上总结的和自己找到的问题. 1. WebView 控件: 使用了 WebView 控件一定要注意清 ...
随机推荐
- swift语言点评二十一-协议
定义有什么,及哪些必须实现. A protocol defines a blueprint of methods, properties, and other requirements that su ...
- 给DOM操作生成的元素添加事件
问题:通过js给页面添加新元素,并给该元素添加绑定事件,但新添加的元素上却没有绑定任何事件. 常见例子:在处理表格的时候,每行行末有个删除按钮,如下图.点击删除按钮的时候删除这一行. //html部分 ...
- Git常见问题 资料汇总
来源https://blog.csdn.net/albb_/article/details/80420468
- git远程仓库变更
查看自己的远程仓库 git remote -v 远程仓库变更 git remote remove origin //移出现有的远程仓库的地址 git remote add origin http:// ...
- docker mysql 文件挂载和MySQL字符集设置
原文:docker mysql 文件挂载和MySQL字符集设置 docker run -p 3306:3306 --name mysql -v /usr/local/mysql/my.cnf:/etc ...
- Java基础学习总结(7)——Object类
一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能 ...
- OO问题
设计一个在线的酒店预订系统,并且可以通过城市搜索出来 解决办法: Main Class: User Room Hotel Booking Adress Enums : 房间的状态和类型 public ...
- EularProject 42:单词解码出来的三角形数
Coded triangle numbers Problem 42 The nth term of the sequence of triangle numbers is given by, tn = ...
- 怎么样才算是精通 C++?
C++是一门非常奇妙的语言.让人又爱又恨. 在知乎上看到的一个帖子.怎么样才算是精通C++,这里节选一些精彩的回复. 链接:http://www.zhihu.com/question/20201972 ...
- Java中泛型的各种使用
Java中的泛型的使用: 1.普通的泛型使用 在使用类的时候后面的<>中的类型就是我们确定的类型. public class MyClass1<T> {//此处定义的泛型是T ...