0. 检查StrictMode的Log输出
很多泄漏问题都会在StrictMode有输出打印,首先看一下StrictMode的Log中是否有有用信息。
大多数问题可以发现,比如service和cursor。
检查unbindService
注意:即使bindService时返回false,也一定要调用unbindService。这一点比较奇怪。
检查关闭Cursor
如果没有头绪,检查以下几点。
1. 避免对Context保持长期的引用
不要使用static的资源对象,因为会保持对activity实例的引用。
不要在Activity中使用非static的内部类(如Handler),改为使用static内部类,内部类中使用Activity的WeakReference:
2. 检查AsyncTask
要及时cancel(尤其是在onStart或onCreate等方法中被动调用的情况)
避免异常情况导致doInBackground阻塞
尽量复用实例
3. 检查AssetsManager
若有加载字体等需要获取AssetsManager的操作,避免使用
context
.getAssets()重复引用AssetsManager