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.