Activity处于后台Handler进行UI操作View组件的isShow()方法慎用

今天测试程序时发现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);
	}
};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值