安卓开发使用handler报错:This Handler class should be static or leaks might occur (anonymous android.os.Handler)
1、背景
今天给app写了个欢迎界面,这个需要保持运行2秒,所以使用了handler,代码如下:
private final Handler handler1 = new Handler(){
@SuppressLint("HandlerLeak")
@Override
public void handleMessage(Message msg) {
loginNav();
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
handler.sendEmptyMessageDelayed(0, 3000);
}
2、出错信息
效果可以实现,但是as显示可以看出来,该方法已经废弃且有警告。 警告信息如下:
Warning:(28, 37) This Handler class should be static or leaks might occur (anonymous android.os.Handler)
3、解决方法
分析警告信息可知,handler需要是静态方法,如果不是,则会可能造成内存泄漏(如果不是static则可能在程序被destroy之后handler也仍然不会被回收) 我们可以直接修改创建handler的方法
private final Handler handler = new Handler(msg -> {
loginNav();
return true;
});
在as中显示效果(没有废弃和警告):
参考stackoverflow
|