- ServiceやBroadcast等のUIスレッド以外のスレッドからToastを表示する
- Toastを表示するタイミングでToast表示用のスレッドを起動し表示する
- 例えば匿名クラスで定義されたコールバック関数内でToastを表示する
Handler Threadの起動からToastの表示まで
- ToastThread.java
// Serviceからコールされ処理を行い、結果をToastで表示する
private void run() {
- (処理省略)
// Toast表示の為のスレッドを起動
HandlerThread handlerThread = new HandlerThread("ToastThread#1");
handlerThread.start(); //スレッド開始
Handler handler = new Handler(handlerThread.getLooper());
//ハンドラは非同期で呼び出される
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Showed toast.", Toast.LENGTH_LONG).show();
}
});
}