私のアプリで行った方法は次のとおりです。ActivityA が最初に開始されます。次に、ActivityB を開始します。ActivityB でエラーが発生する可能性があり、その場合は activityA に戻りたいか、すべてが正しく終了する可能性があり、その場合はアプリを完全に「終了」したいと考えています。
アクティビティ A:
public class ActivityA extends Activity {
...
private final static int REQUEST_ACT_B = 1;
...
private void startChild() {
startActivityForResult(new Intent(this, ActivityB.class), REQUEST_ACT_B;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_TASK && resultCode == ActivityB.RESULT_OK) {
this.finish();
}
}
}
そしてActivityBで:
public class ActivityB extends Activity {
...
public final static int RESULT_OK = 1;
public final static int RESULT_ERROR = 2;
...
private void finishWithError() {
setResult(RESULT_ERROR);
finish();
}
private void finishSuccessfully() {
setResult(RESULT_OK);
}
}
基本的に、ActivityA は ActivityB を開始し、結果が返されることを期待します。「OK」という結果が返された場合、アプリケーションは終了し、ユーザーは賢明ではありません: アプリは終了しました。結果「エラー」を受け取った場合、ActivityA は開いたままになります。