質問: 【やりたいこと】 Android にて非同期で複数の処理をしようと考えています。 処理 A, B, C... があり、全ての処理が終わったところで UI側にreceiver.sendしたいです。 【やってみたこと】 Activityから X_IntentServiceを呼び、 そこから A_IntentService, B_IntentService というように複数の処理を行い、 全て終わったところで X_IntentServiceから `receiver.send()` しようとしたら A,Bなど各IntentServiceにて receiver.send()した時に以下のExceptionになってしまいます。 ``` java.lang.RuntimeException: Handler (android.os.Handler) {656e5a68} sending message to a Handler on a dead thread ``` そもそも`IntentService`から `IntentService` は呼べない仕組みなのでしょうか? A_IntentServiceから receiver.send() した時には X_IntentService の処理がすでに終わってる、ということでしょうか。 また、こう言ったケースのベストプラクティスはありますか?
回答: 別スレッドからUIスレッドへの橋渡しとなるHandlerを使用 ``` Handler handler= new Handler(); public void onClickButton(View v) { new Thread(new Runnable() { @Override public void run() { // マルチスレッドにしたい処理 ここから final String result = getMessage(); // 何かの処理 handler.post(new Runnable() { @Override public void run() { msgView.setText(result); // 画面に描画する処理 } }); // マルチスレッドにしたい処理 ここまで } ``` }).start(); }