这是我在我的应用程序中执行此操作的方式: 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 保持打开状态。