view.setText("hello");
wait(1000);
view.setText("world");
当我调用上述函数时,视图根本不显示“hello”。文本只在完整功能完成时更新。我有什么要打电话来看“你好”?Android中的更新TextView
view.setText("hello");
wait(1000);
view.setText("world");
当我调用上述函数时,视图根本不显示“hello”。文本只在完整功能完成时更新。我有什么要打电话来看“你好”?Android中的更新TextView
问题是,您正在更新阻塞UI线程的UI,然后再次更新它。你不应该睡觉UI线程,这是不好的做法,用户不会喜欢它。
线程可以解决这个问题,但是你真的不需要一个线程来处理你在这里做的事情(另外,你不应该从后台线程更新UI,你需要使用一个处理程序来发送信息)。
您应该单独使用处理程序来执行此类型的简单更新,因为它不会在应用程序中使用其他线程。你可以使用postDelayed方法让它在特定的时间回调你的UI线程。
这篇文章http://developer.android.com/resources/articles/timed-ui-updates.html涵盖了实现定时UI更新,非常简单。
要转换例如:
//member variable
private Handler mHandler = new Handler();
//In your current Method
view.setText("hello");
mHandler.postDelayed(mUpdateTimeTask, 1000);
//Member variable
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
view.setText("world");
}
};
我想我知道你的问题是什么。
当您修改UI对象时,它会更改其状态,但不是直接在屏幕上。每个系统工作稍有不同但基本逻辑是相同的
主循环:元素 2)的
1)修饰刷新屏幕。
这里发生了什么是 修改为hello 等待 修改为世界 刷新。
你使主线程等待,但接口永不刷新时间
之间解决这个你有几种方法:
-Thread修改,以便您的等待,不影响显示器 像
new Thread(new Runnable(){
public void run(){
wait(1000);
view.setText();
}
}
您遇到问题了......他正在屏蔽UI线程并等待,但您的解决方案并不完全正确。您不应该从后台线程更新UI。您应该使用处理程序并将消息发送回UI线程以更新视图。 – 2010-11-24 08:16:30
我发现开发者中心这个代码,并能正常工作:
view.setText("hello");
new CountDownTimer(1000, 100) {
TextView view = (TextView) findViewById(R.id.view);
public void onTick(long millisUntilFinished) { }
public void onFinish() {
view.setText("World!")
}
}.start();
你可以分享更多的代码? – st0le 2010-11-24 07:56:47