Android-Handler的一些思考
来源:互联网 发布:哇嘎无法连接网络 编辑:程序博客网 时间:2024/06/14 04:41
当我们使用Handler的时候,习惯于这样写
private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {};};
在Lint检查时会有这样的警告:
This Handler class should be static or leaks might occur
当消息队列中有消息排队的时候,这些Message就保持了对handler的引用,而handler在这里是个内部类,它又保持了对外部类的引用。这样就容易造成Activity或者service无法被GC,引起内存泄露。
Lint给出的建议是让handler是静态的并且保持弱引用。应该如此解决:
static class MyHandler extends Handler{WeakReference<MainActivity> mActivity;public MyHandler(MainActivity activity) {mActivity = new WeakReference<MainActivity>(activity);}@Overridepublic void handleMessage(Message msg) {MainActivity activity = mActivity.get();if(activity == null){return;}switch (msg.what) {default:break;}}}private MyHandler handler = new MyHandler(this);
0 0
- Android-Handler的一些思考
- Android 线程的思考 与 Handler
- Android中关于Handler的若干思考
- 关于Android中的Handler的一些认识
- android中Handler、Thread、Runnable更新UI的思考
- Android消息机制中Handler切换线程的思考
- Android环境的搭建的一些思考
- Android客户端程序员的一些思考
- Android关于OutOfMemoryError的一些思考
- 关于Android中ANR的一些思考
- 关于Android中ANR的一些思考
- 对Android发展的一些思考
- Android关于OutOfMemoryError的一些思考
- 关于Android中ANR的一些思考
- Android关于getChildCount()方法的一些思考
- Android中Hook Instrumentation的一些思考
- 关于Android中ANR的一些思考
- Android应用架构的一些思考-从零开始
- PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
- Spark 机器学习-实例演示- K-Means《二》
- 六、Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
- Xcode3.2.5-Xcode5.0版本PK
- Python 输出字典中的组合元素
- Android-Handler的一些思考
- (译)KVO的内部实现
- win8系统安装时2503,2502错误解决办法
- node.js(一)
- dns
- java中的内部类总结
- Leetcode记录7-单链表
- Html学习笔记(二)
- string、char*、const char*、char [] 之间的相互转化