我注意到视图被销毁时视图的处理程序没有被清除。 看看这个示例代码:
Handler viewHandler = view.getHandler();
if (viewHandler != null) {
viewHandler.post(new Runnable() {
@Override
public void run() {
view.doSmth();
}
});
}
在罕见的情况下,它可能会在NullPointerException
方法中抛出run()
。
你们有没有解决这个问题的方法,不每当我想在UI线程上执行某些操作时,在每个类中创建一个单独的处理程序(并手动管理它)?
答案 0 :(得分:0)
试试此代码
Handler viewHandler = view.getHandler();
if (viewHandler != null) {
Runnable runnable=new Runnable() {
@Override
public void run() {
view.doSmth();
}
};
viewHandler.post(runnable);
}
在onStop()
@Override
protected void onStop() {
super.onStop();
viewHandler.removeCallbacks(runnable);
}