Android 应用内存泄露的检查点

0. 检查StrictMode的Log输出

很多泄漏问题都会在StrictMode有输出打印,首先看一下StrictMode的Log中是否有有用信息。

大多数问题可以发现,比如service和cursor。

检查unbindService

注意:

即使bindService时返回false,也一定要调用unbindService。这一点比较奇怪。

检查关闭Cursor



如果没有头绪,检查以下几点。


1. 避免对Context保持长期的引用

不要使用static的资源对象,因为会保持对activity实例的引用。
http://android-developers.blogspot.co.il/2009/01/avoiding-memory-leaks.html
不要在Activity中使用非static的内部类(如Handler),改为使用static内部类,内部类中使用Activity的WeakReference:
http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html


2. 检查AsyncTask

要及时cancel(尤其是在onStart或onCreate等方法中被动调用的情况)
避免异常情况导致doInBackground阻塞
尽量复用实例

3. 检查AssetsManager 

若有加载字体等需要获取AssetsManager的操作,避免使用 context .getAssets()重复引用AssetsManager

你可能感兴趣的:(android,内存泄露)