【发布时间】:2015-06-13 15:12:34
【问题描述】:
This Handler class should be static or leaks may occur (null)
此消息的“类”是否指的是“MyActivity”,因为 Handler 是一个对象,而我确实将其声明为静态的。我应该忽略它还是应该添加一些东西,比如“MyActivity”声明中的某个地方的“静态”(我试过这个并得到错误)。我注意到此 lint 警告通常建议使用“WeakReference”。
public class MyActivity extends Activity{
...
static Handler handler;
...
handler = new Handler()
{
public void handleMessage(Message msg) {
【问题讨论】:
-
不,如果您实例化一个内部处理程序类,您应该使该类本身静态以避免泄漏。现在您正在使用非静态的默认类构造函数,您可以创建自己的内部类来扩展处理程序并且是静态的以修复警告。
-
只有当您使用任何类型的“延迟”执行并且最后没有清空消息队列时,才会存在“可能发生泄漏”的风险