質問: 0; i < 5; i++) { textView.setText(String.valueOf(i)); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }); } ``` ボタンを押すとLogは一秒ごとに出力されるのですが、TextViewは何も起きずに5秒後にTextViewが変更されます。 1秒ごとにTextViewを変更させたいのですがどうしたら良いのでしょうか? よろしくお願いします。
回答: runOnUiThreadはUIスレッド上で処理を行います、runメソッドが全て終わらないと画面への更新は行われません。 そのため1秒間隔で画面を更新するような処理をしているように見えますが、runメソッド自体は終了していないので画面が更新されず、runメソッドが終わった最後に画面が更新されます。 解決するにプログラムに書き換えるといいですよ。 1-Threadを起動する。 2-Threadの中でforループをする。 3-Threadのforループの先頭でrunOnUiThreadを呼びTextViewを更新する。 4-Threadのforループの終わりでThread.sleepをする。