0

インテントを通じて 2 番目のアクティビティを呼び出すアクティビティがあります。2 番目のアクティビティが呼び出された後、最初のアクティビティを終了したいと考えています。したがって、onStop()メソッドに次のコードがあります。

@Override
public void onStop() {
    super.onStop();
    if (shouldBeClosed) {
        finish();
    }
}

問題は、私の最初の活動が閉じられていないことです。そして、私はなぜ理解していないのですか?
多分私はこのコードをに入れるべきonPause()ですか?
しかし、この場合、私が理解しているように、アクティビティがフォーカスを失ったとき (ダイアログの呼び出し後など)、アクティビティを閉じることができます。
では、なぜこれが起こるのか、どうすればこの動作を修正できるのでしょうか?

PS変数shouldBeClosedはtrueです。これはポイントではありません。

編集

2 番目のアクティビティの呼び出しは次のとおりです。

Intent intent = new Intent(this, AcSpContextAssign.class);
Bundle extras = new Bundle();
extras.putInt(Constants.KEY_FROM_ACTIVITY, Constants.FROM_AcSpNameCreate);
extras.putLong(Constants.KEY_SPID, spId);
intent.putExtras(extras);
startActivity(intent);
4

1 に答える 1

2

通常、インテントを送信した直後に、最初のアクティビティに対して finish() を呼び出す必要があります。何かのようなもの:

...
startActivity(secondActivityIntent);
finish();

これにより、最初のアクティビティで onPause()->onStop()->onDestroy() チェーンがトリガーされるため、そこで通常のクリーンアップを実行できます

于 2012-07-25T19:00:52.820 に答える