今天测试程序时发现Activity处于后台时,当前activity处于stop()状态,当前activity接受到消息,然后针对该消息使用Handler进行UI操作,需要将界面中的某个组件隐藏,但发现一直无法隐藏,主要是由于该组件隐藏前,使用isShow()方法进行判断。当前Activity处于后台时,View.isShow()一直为false,导致不会隐藏该组件。所以最好是不要用这个判断条件或者是改为判断该组件是否为null,当不为null的时候可以执行 rl_qrcode.setVisibility(View.GONE);则组件的显示和隐藏会正常执行。
亲,View.isShow()慎用
Handler mHandler = new Handler(){
@Overridepublic void handleMessage(Message msg) {
switch (msg.what) {
case SHOW_SET:
if (rl_qrcode != null) {
rl_qrcode.setVisibility(View.VISIBLE);
}
break;
case HIDE_SET:
if (rl_qrcode.isShow()) { //当前Activity处于后台时,View.isShow()一直为false,导致不会隐藏该组件
rl_qrcode.setVisibility(View.GONE);
}
break;
default:
break;
}
super.handleMessage(msg);
}
};