在 Android 框架中,如果调用 aTextView
的setText()
方法,并且在它返回之后Thead.sleep()
被调用,那么设备的屏幕不会显示给定的文本,直到 aftersleep()
已经返回。为什么?
public class SleeperActivity extends Activity {
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.main);
}
public void doDelay(View view) {
try {
TextView textView = (TextView) view;
textView.setText("Sleeping");
Log.d("Sleeper", "This log entry is invoked before sleeping");
Thread.sleep(5000L);
textView.setText("Ready");
} catch (InterruptedException e) { finish(); }
}
}
未显示的布局有一个按钮,其onClick
属性设置为doDelay()
。
当上面的代码编译并运行,并且点击按钮时,在第一次调用中传递的文本setText()
直到线程休眠五秒钟后才会出现在屏幕上,即使日志条目出现在那些之前的日志中五秒钟开始过去。
为什么会发生这种情况,我应该怎么做才能使第一次调用中传递的文本在setText()
线程开始休眠之前出现在屏幕上?