【发布时间】:2013-09-22 16:09:32
【问题描述】:
当我实现处理程序时,我收到警告
' 这个 Handler 类应该是静态的,否则可能会发生泄漏 '
因为上面的警告我将处理程序定义为静态类。
下面是修改后的。
public static Handler _handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Bundle bundle = msg.getData();
.
.
.
super.handleMessage(msg);
}
};
现在我的这个处理程序将接收来自许多线程的消息。所以我想知道将这个处理程序定义为静态是否可以? Handler 将所有接收到的消息放在一个队列中,并一一处理,不遗漏任何内容?
【问题讨论】:
-
这种方式对我不起作用。我的问题不是解决 lint 错误。但是关于同步。如果我将类定义为静态类,我是否会从许多线程中获取所有消息而不会丢失任何内容。
-
我认为在同步方面没问题。
-
如果我们可以简单地使用这个,为什么我们需要使用这个代码? - stackoverflow.com/questions/11407943/…
-
重点是 Handler 类(不是实例)应该是静态的,因为它将它与父类解除绑定,因为没有该 Handler 就不能存在而不被父类包装。在您的代码中,匿名类就可以了。
标签: android static handler synchronize