本文主要是介绍This `Handler` class should be static or leaks might occur (anonymous android.os.Handler)错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
安卓开发使用handler报错:This Handler
class should be static or leaks might occur (anonymous android.os.Handler)
1、背景
今天给app写了个欢迎界面,这个需要保持运行2秒,所以使用了handler,代码如下:
//WelcomeActivityprivate final Handler handler1 = new Handler(){@SuppressLint("HandlerLeak")@Overridepublic void handleMessage(Message msg) {loginNav();super.handleMessage(msg);}};@Overrideprotected 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
这篇关于This `Handler` class should be static or leaks might occur (anonymous android.os.Handler)错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!