Handler.post()
UI スレッドで操作を行う場合はいつでも使用する必要があります。
TextView
では、コールバックで a のテキストを変更したいとしましょう。コールバックは UI スレッドで実行されていないため、 を使用する必要がありますHandler.post()
。
Android では、他の多くの UI フレームワークと同様に、UI 要素 (ウィジェット) は UI スレッドからのみ変更できます。
また、"UI スレッド" と "メイン スレッド" という用語は、しばしば同じ意味で使用されることに注意してください。
編集:長時間実行タスクの例:
mHandler = new Handler();
new Thread(new Runnable() {
@Override
public void run () {
// Perform long-running task here
// (like audio buffering).
// You may want to update a progress
// bar every second, so use a handler:
mHandler.post(new Runnable() {
@Override
public void run () {
// make operation on the UI - for example
// on a progress bar.
}
});
}
}).start();
もちろん、実行したいタスクが非常に長く、その間にユーザーが別のアプリに切り替えるリスクがある場合は、Serviceの使用を検討する必要があります。