"处理程序类应该是静态的,否则可能会发生泄漏" - 处理程序引用了主要的活动变量

Ale*_* L. 2 variables static reference handler android-activity

Android:我在我的活动中定义了一个Handler类,我得到警告"Handler类应该是静态的,否则可能会发生泄漏",代码如下:

    Handler messageHandler = new Handler() {
      // @Override 
      public void handleMessage(Message msg) {
        try {
            ... accessing variables defined at the activity level
            ... doing something very important
        }
        super.handleMessage(msg)
      }
    }
Run Code Online (Sandbox Code Playgroud)

但问题是我的消息处理程序有对主要活动变量的引用,所以我不能使它成为静态的.在我的情况下,如何摆脱这种警告(以正确的方式)?

小智 6

更改

Handler messageHandler = new Handler() {
      // @Override 
      public void handleMessage(Message msg) {
        try {
            ... accessing variables defined at the activity level
            ... doing something very important
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

Handler mIncomingHandler = new Handler(new Handler.Callback() {
    @Override
    public boolean handleMessage(Message msg) {
    }
});
Run Code Online (Sandbox Code Playgroud)

引用: 此Handler类应该是静态的,否则可能会发生泄漏:IncomingHandler