【2013-10-19】Android应用开发笔记:Handler弱引用
2026/6/26 22:29:58 网站建设 项目流程

[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2013-10-19| 标题:Android应用开发笔记:Handler弱引用分类:编程 / android |标签:android·handler


Android应用开发笔记:Handler弱引用

新版 Android SDK 在使用 Handler 内部类时会出现如下警告:

This Handler class should be static or leaks might occur.

原因是:消息队列中排队的消息会持有目标 Handler 的引用,若 Handler 是非静态内部类,则会同时持有外部类(如 Activity)的引用,导致 Activity 无法被 GC 回收,从而内存泄漏。

解决方案:将 Handler 声明为static嵌套类,并通过WeakReference持有外部类引用。

publicclassMainActivityextendsActivity{privateMainActHandlerhandler=newMainActHandler(this);@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}privatestaticclassMainActHandlerextendsHandler{privateWeakReference<MainActivity>activity;publicMainActHandler(MainActivityact){super();this.activity=newWeakReference<>(act);}@OverridepublicvoidhandleMessage(Messagemsg){MainActivityact=activity.get();if(null==act)return;switch(msg.what){// 处理消息}}}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询