使用AsyncTask防止Memory Leaks(内存泄漏)

1. 合理的使用context–比如我们常使用的Toast,Service,最好使用getApplicationContext(),因为这些在activity结束的时候可能仍在运行
下图展示了一些场景我们该用哪种context(图是盗的,附原文地址https://possiblemobile.com/2013/06/context/ 是国外的大牛写的关于context的使用)

2. 不要在activity中使用AsyncTask的强引用,如下是不行的:

正确的姿势应该是将你的异步任务变成静态内部类,并且持有MyActivity的一个弱引用,当更新UI(即执行onPostExecute)的时候我们需要拿到activity的一个强引用,这个时候去判断activity的状态,是销毁了还是健在再去做处理,就避免了内存泄漏

3. 广播接收者不要忘记解注册

4. 观察者模式不要忘记deleteObserver(observer);

5. 要注意静态变量,方法还有单例模式的生命周期是和Application一致的,此时要特别注意context的引用

参考链接


发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注