1. 单例造成的内存泄漏,在应用中,应尽量避免传入Activity的context。
比如在调用Commutil.getInstance();传入的context,应尽量传Application的Context,Application的生命周期伴随着整个进程的周期。
2. 在界面不可见的时候会回调该方法 onTrimMemory().
3. 变成时将HashMap替换为SparseArray,可以有效的避免掉了基本数据类型转换成对象数据类型的时间。
关于内存溢出和内存泄漏的总结:
在什么情况下会造成内存泄漏:在activityA中创建一个子线程,子线程中做一个轮训操作,当关闭activity的时候,就有可能造成内存泄漏,因为activity内部一直在做轮训操作,无法释放activity对象,就会造成内存泄漏。
在什么情况下会造成内存溢出:activityB跳转到activityA,关闭A,重新再B中打开A,重复此动作,当内存大于系统分配的运行内存空间的时候,就会造成内存溢出,
多线程:
(1)AsyncTask类 android封装好的类,会提供各种的回到,比如进度,处理结果等等。
(2)view.post()
(3)handler
(4)activity.runUiThread();
线程池:
避免OOM溢出的方法如下:
在android中最主要造成内存溢出最主要的案例就是加载bitmap产生的,所以要对图片进行缩放操作。
UI性能优化:
减少视图的层级、
减少视图层级可以有效的减少内存消耗,因为视图是一个树形结构,每次刷新和渲染都会遍历一次。