Tom*_*ito 20 user-interface android
我尝试使用线程,但android抛出"CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触及其视图."
那么我怎么能等待3秒然后隐藏视图,让GUI响应?
-
Timer也使用另一个线程,所以它不会解决..
use*_*973 59
有一种更简单的方法:使用View.postDelayed(runnable,delay)
View view = yourView;
view.postDelayed(new Runnable() {
public void run() {
view.setVisibility(View.GONE);
}
}, 3000);
Run Code Online (Sandbox Code Playgroud)
它不是很精确:可能会隐藏在3.5或3.2秒内,因为它会发布到ui线程的消息队列中.
使用post()或runOnUiThread()就像setTimeout()一样.
Bra*_*rke 18
产生一个单独的线程,休眠3秒然后调用runOnUiThread隐藏视图.
Thread thread = new Thread() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
runOnUiThread(new Runnable() {
@Override
public void run() {
// Do some stuff
}
});
}
};
thread.start(); //start the thread
Run Code Online (Sandbox Code Playgroud)
mbo*_*nin 18
无需引用视图或睡眠线程:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// do stuff
}
}, 3000);
Run Code Online (Sandbox Code Playgroud)
我知道这是一个延伸,但是如果您碰巧使用协程,这里有一个答案:
lifecycleScope.launch {
delay(3000)
header.visibility = View.GONE
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29625 次 |
| 最近记录: |