Android フレームワークでは、TextView
のsetText()
メソッドが呼び出され、それが返された後にThead.sleep()
が呼び出された場合、デバイスの画面は after が返されるまで、指定されたテキストを表示しませんsleep()
。なんで?
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()
、スレッドが 5 秒間スリープするまで画面に表示されません。 5 秒が経過し始めます。
スレッドがスリープ状態になる前に、最初の呼び出しで渡されたテキストがsetText()
画面に表示されるようにするには、どうすればよいでしょうか?