关于This Handler class should be static or leaks might occur的解决办法
来源:互联网 发布:保安巡更软件 编辑:程序博客网 时间:2024/06/11 11:32
今天在使用定时器的时候使用到了Handler,且使用如下
Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { //do some code
super.handleMessage(msg); } }
编译成功,但却提示This Handler class should be static or leaks might occur,意思就是说:Handler类必须声明为静态的,否则将会内存泄漏,接着我想当然的把handler声明为静态的,结果也是同样出现这个警告,于是上谷歌搜索了下,大致了解里面的缘由:在handler对象生成时,它将和主线程Looper对象的消息队列相关联,消息队列中的消息将会持有一个对Handler的引用,且Handler作为内部类将持有外部类的一个引用(参见java内部类的讲解,其中内部类可以访问外部类的private成员,就是因为其持有外部类的一个引用),当外部类生命周期结束时候,其上下文由于被引用而不能GC,导致资源泄漏。当声明成静态内部类时,将不会持有外部类的引用。如果要访问外部类的话可以使用弱应用。改进后的代码如下:
static class MyHandler extends Handler{ WeakReference<MainActivity>mActivity; MyHandler(MainActivity act){ mActivity = new WeakReference<MainActivity>(act); } @Override public void handleMessage(Message msg) {
MainActivity MA = mActivity.get(); //do some code super.handleMessage(msg); } }
如有错误,敬请指正,谢谢!
0 0
- 关于This Handler class should be static or leaks might occur的解决办法
- This Handler class should be static or leaks might occur
- This Handler class should be static or leaks might occur
- This Handler class should be static or leaks might occur
- This Handler class should be static or leaks might occur
- This Handler class should be static or leaks might occur
- This Handler class should be static or leaks might occur
- This handler class should be static or leaks might occur
- This Handler class should be static or leaks might occur
- This Handler class should be static or leaks might occur.
- 关于Android“This Handler class should be static or leaks might occur”警告的处理方法
- 关于Android“This Handler class should be static or leaks might occur”警告的处理方法
- 关于Android“This Handler class should be static or leaks might occur”警告的处理方法
- 关于Handler 使用This Handler class should be static or leaks might occur 警告处理
- Android 关于Handler警告处理 This Handler class should be static or leaks might occur
- 关于Handler 使用This Handler class should be static or leaks might occur 警告处理
- This Handler class should be static or leaks might occur 解决办法
- This Handler class should be static or leaks might occur 解决办法
- 创建第一个Activity
- gradle翻译文档地址
- windows下命令行编译程序
- java佩恩沃星球打怪掉血实现
- 包的设计
- 关于This Handler class should be static or leaks might occur的解决办法
- 2015腾讯校招后台开发一面二面三面面试分享
- STM32学习第三天----有个USART的发送数据的问题没有解决
- [UWP开发] Cortana启动应用
- velocity模板的语法简要汇总
- 2015.11.26 接下来学习方向的一些想法——尝试学习后台开发
- 南大软院大神养成计划--第十一天JS进行中
- Unique Paths
- 杭电1491Octorber 21st(数学)