为什么睡眠后setText()不';不行?在android内部,消息队列是如何工作的?
我知道UI线程不应该阻塞的两条规则,并且只在UI线程中使用UI 所以我大致知道为什么将Thread.sleep()与setText()一起使用不起作用。(因为call Thread.sleep()会阻止UI线程!!) 但是…为什么 想象下面的代码,我点击一个按钮启动计时器,表示每50毫秒一个数字为什么睡眠后setText()不';不行?在android内部,消息队列是如何工作的?,android,multithreading,Android,Multithreading,我知道UI线程不应该阻塞的两条规则,并且只在UI线程中使用UI 所以我大致知道为什么将Thread.sleep()与setText()一起使用不起作用。(因为call Thread.sleep()会阻止UI线程!!) 但是…为什么 想象下面的代码,我点击一个按钮启动计时器,表示每50毫秒一个数字 public void onTimerClicked(View v){ TextView tv = (TextView) findViewById( .. ) for( int i =
public void onTimerClicked(View v){
TextView tv = (TextView) findViewById( .. )
for( int i = 1; i <= 10; i++ ){
Thread.sleep(50) // in milil seconds
tv.setText(String.valueOf(i));
}
}
public void onTimerClicked(视图五){
TextView tv=(TextView)findViewById(..)
对于(int i=1;i因为onTimerClicked
在UI线程上被调用…您用onTimerClicked
内部的循环阻止了它…所以没有时间重新绘制(因为它也是在当前被阻止的UI线程上完成的)…UI线程只是从消息队列中获取一个作业并执行它…因此它不能同时执行两个操作time@Selvin谢谢你的回复。但这不是我想要的。事实上我找到了很好的答案。这很好地描述了我真的很想知道的