Проблема заключается в том, что вы обновляете пользовательский интерфейс, блокируя поток пользовательского интерфейса, а затем обновляя его снова. Вы не должны спать в потоке пользовательского интерфейса, это плохая практика, и пользователям это не понравится.
Threading решит проблему, но вам действительно не нужна нить для того, что вы здесь делаете (также вы не должны обновлять пользовательский интерфейс из фонового потока, вам нужно будет использовать обработчик для отправки сообщение).
Вы должны использовать обработчик самостоятельно, чтобы сделать это простое обновление, потому что оно не использует дополнительный поток в приложении. Вы можете использовать метод postDelayed, чтобы он возвращал ваш поток пользовательского интерфейса в определенное время.
Эта статья http://developer.android.com/resources/articles/timed-ui-updates.html охватывает реализацию временного обновления пользовательского интерфейса и довольно прямолинейна.
Чтобы преобразовать ваш пример:
//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");
}
};
вы можете поделиться еще какой-то код? – st0le 2010-11-24 07:56:47