ユーザーが戻るボタンをクリックして前のアクティビティにアクセスするか、他の操作を行うとアクティビティが終了するシナリオがあります (着信、電源ボタンのクリック、アプリの切り替えなど)。これらの呼び出しは、前のアクティビティ ( で呼び出され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();
}