android关于handler的内存泄露
来源:互联网 发布:哥本哈根会议 知乎 编辑:程序博客网 时间:2024/06/16 07:09
通常一个activity中会执行耗时的网络请求,也会用到handler去更新UI,但是当我们刚进入页面,然后就关闭当前页面,子线程或者异步请求并没有执行完,就会导致activity没有被销毁(handler中隐 用了activity,故不会立即被销毁掉),即使使用handler.post去更新UI,handler也会被放入message的队列中去,也会受到引用,而handler中隐用了activity,同样不会被销毁掉。解决如下:
a.在销毁activity生命周期中,去停止子线程的执行,stop
b.倘若用的是异步处理请求,则同样在destroy中去执行异步的.onCancle()方法
c.将handler声明为静态(因为静态不持有外部类的引用),但是handler中却吊用不了activity中的对象了,所以才去弱引用的方式去实现,类似如下:
static class MyHandler extends Handler {
WeakReference<Activity > mActivityReference;
MyHandler(Activity activity) {
mActivityReference= new WeakReference<Activity>(activity);
}
@Override
public void handleMessage(Message msg) {
final Activity activity = mActivityReference.get();
if (activity != null) {
mImageView.setImageBitmap(mBitmap);
}
}
}
- android关于handler的内存泄露
- 关于Android中Handler引发的内存泄露
- 关于handler内存泄露的问题
- 关于Handler引起的内存泄露
- android handler 内存泄露
- Android Handler内存泄露
- Android Handler 内存泄露
- android内存泄露:handler
- Android开发内存泄露之--Handler引起的内存泄露
- Android 中 Handler 引起的内存泄露
- Android 中 Handler 引起的内存泄露
- Android中Handler引起的内存泄露
- Android中Handler引起的内存泄露
- Android中Handler引起的内存泄露
- Android中Handler引起的内存泄露
- Android中Handler引起的内存泄露
- Android中Handler引起的内存泄露
- Android中Handler引起的内存泄露
- 用Visual C++.NET进行GDI+编程
- 关于fragment的getActivity()返回null的处理
- 黑马程序员——反射
- 黑马程序员——C基础之位运算符
- Android Graphics.drawable之—ShapeDrawable学习
- android关于handler的内存泄露
- Tasts and Back Stack
- 系统升级到Mac OS X EI Capitan ,安装cocoa pods的问题
- 查表数量
- iOS判断字符串是否包含子字符串
- Android EditText的一些小用法
- C# 函数中的out型参数
- Android 最火的快速开发框架XUtils
- mahout0.11.0的安装及使用