「メインスレッドに通知」することはできません。
最善の方法はExecutorService
、たとえば次のように を使用することです。
import java.util.concurrent.*;
// in main thread
ExecutorService executorService = Executors.newSingleThreadExecutor();
Future<?> future = executorService.submit(new Runnable() {
@Override
public void run() {
//Do something big...
}
});
future.get(); // blocks until the Runnable finishes
クラスは非同期操作を処理するために特別に作成されており、そこに含まれるすべてのコードは既に作成されており、防弾仕様になっています。
編集
待機中にメイン スレッドをブロックしたくない場合は、別のスレッド内で待機します。
final Future<?> future = executorService.submit(new Runnable() {
@Override
public void run() {
//Do something big...
}
});
new Thread(new Runnable() {
@Override
public void run() {
future.get(); // blocks until the other Runnable finishes
// Do something after the other runnable completes
}
}).start();