setVisibility 有时不能及时显示
这种情况一般是在UI线程之后跟了比较耗时的任务,
需要开启子线程,在子线程中执行耗时任务,方能使view 的 setVisibility 正常显示隐藏
主线中代码执行
public void mainThread(){
view.setVisibility(View.VISIBLE);
startThread();
}
子线程中代码
Thread thread = new Thread(new Runnable(){
public void run(){
///耗时任务
dealHaoshiTask();
//耗时任务执行完 发送给handler
Message message = new Message();
message.obj = "隐藏";
message.what = 1;
mHandler.sendMessage(message);
}
});
thread.start();
handler中代码
private Handler mHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message message) {
switch (message.what) {
case 1:
//handler中隐藏view
loadingView.setVisibility(View.GONE);
break;
default:
break;
}
return false;
}
});
耗时任务
public void dealHaoshiTask(){
}