mHandler = new Handler();
mHandler.post(new Runnable() {
@Override
public void run() {
text.setText(""+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// TODO Auto-generated method stub
while(i<5){
i ++;
text.setText(""+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});大家看看上面的代码,有什么问题?问什么5秒后,textview才会显示 5 而不是实时刷新?
mHandler.post(new Runnable() {
@Override
public void run() {
text.setText(""+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// TODO Auto-generated method stub
while(i<5){
i ++;
text.setText(""+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});大家看看上面的代码,有什么问题?问什么5秒后,textview才会显示 5 而不是实时刷新?
解决方案 »
- SlidingDrawer的handle视图响应事件的问题
- 全屏下如何实现屏蔽home键?
- android 使用notification activity间切换的问题
- 问一个关于ContentProvider的问题
- android 怎么在一个activity里跳转到listactivity??
- Service奇怪的生命周期:会被突然中断和重启
- android phone
- Socket通信 用手机3g网络连接不到服务器,内网连接没问题
- AutoCompleteTextView如果内容过多会自动横向撑开到屏幕外去了。
- 请教如何动态改变自定义View画图位置
- android生成视频缩略图
- activity model adapter三者之间的关系
Log.i("Test", "现在显示:"+i);然后再运行看Log日志,就会清楚结果了。
i ++;
text.setText(""+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
你睡了5秒啊,当然5秒后显示啊
你要把信息handler出去 而不是直接在线程里进行setText
text.setText(""+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}那为什么没有显示 0?
在单线程的UI模型中,只有在这个线程执行一次循环后才会更新界面在你的run方法里的sleep等于是让UI线程休眠,要一直等到你的run方法执行完,UI才会得到刷新。也就是说,UI上,只能看到最后一次循环执行的结果
awt,swing,swt,j2me,android