ユーザーが戻るボタンをクリックして前のアクティビティにアクセスするか、他の操作を行うとアクティビティが終了するシナリオがあります (着信、電源ボタンのクリック、アプリの切り替えなど)。これらの呼び出しは、前のアクティビティ ( で呼び出されstartActivityForResultます) とは異なる結果を返す必要があります。実行されるアクションに応じて、正常な終了または乱雑な終了のいずれかになります...
これで、Android が呼び出すと、onBackPressed常にそれも呼び出されonStopますが、その逆ではありません。onBackPressedそのため、 を呼び出さずに呼び出したときにアプリを終了させたいのですが、内部onStopで呼び出しても機能しません。finish()onBackPressed
私の問題を説明するためのいくつかのコード:
@Override
public void onStop() {
// this gets called no matter what, I don't like that
Log.i(TAG, "Canceled");
setResult(RESULT_CANCELED, new Intent());
finish();
super.onStop();
}
@Override
public void onBackPressed() {
Log.i(TAG, "User ended activity");
setResult(RESULT_OK, new Intent());
finish();
super.onBackPressed();
}