此Handler类应该是静态的或可能发生泄漏(null)

And*_*der 3 android handler

This Handler class should be static or leaks may occur (null)
Run Code Online (Sandbox Code Playgroud)

这个消息的'class'是指'MyActivity',因为Handler是一个对象,我确实声明它是静态的.我应该忽略它还是应该添加一些内容,例如'MyActivity'声明中的'static'(我试过这个并且出错了).我注意到这种棉绒警告通常建议使用'WeakReference'.

public class MyActivity extends Activity{
...
static Handler handler;
...
handler = new Handler()
  {
    public void handleMessage(Message msg) {
Run Code Online (Sandbox Code Playgroud)

Com*_*are 25

因为Handler是一个对象,我确实声明它是静态的

您声明数据成员是静态的.但是,您使用的是匿名内部类,因此您的子类Handler不是static.

代替:

  handler = new Handler() {
    public void handleMessage(Message msg) {
      // do cool stuff
    }
  };
Run Code Online (Sandbox Code Playgroud)

使用:

handler=new MyVeryOwnHandler();
Run Code Online (Sandbox Code Playgroud)

where MyVeryOwnHandler是常规Java类还是static内部类:

private static class MyVeryOwnHandler extends Handler {
  public void handleMessage(Message msg) {
      // do cool stuff
  }
};
Run Code Online (Sandbox Code Playgroud)

请注意,错误是该类需要static; 它没有说对象需要static.