3

1つのサンプルアプリがありActivityます。ユーザーが戻るボタンを使用してアプリを終了し、後でアプリのアイコンを使用して、Activity.

問題は、戻るボタンを押して n 回借りると、アプリのインスタンスが n 個になることです (メモリ分析ツールで確認したように)。

onBackPressed()を呼び出すようにオーバーライドしようとしましfinish()た。この場合、 が呼び出されていることがわかりますが、メモリ内onDestroy()には の複数のインスタンスが残っていActivityます。、、android:launchModeなどのさまざまな も試しましたが、いずれの場合でものクラスのインスタンスが複数存在します。"singleTop""singleTask""singleInstance"Activity

Activityこの単純なケースでの複数のインスタンスが実行されないようにするにはどうすればよいですか?

4

1 に答える 1

0

戻るボタンをクリックすると、アクティビティが破棄されます。フォーカスを当てるたびにアクティビティが再作成されるのは当然です。これが仕組みです。

また、画面の向きが変わると、アクティビティが破棄されて再作成されます。

http://developer.android.com/training/basics/activity-lifecycle/index.html . アクティビティのライフサイクルをたどります。

http://developer.android.com/guide/components/tasks-and-back-stack.html。このドキュメントでは、ユーザーが [戻る] ボタンと [ホーム] ボタンをクリックしたときに、アクティビティがバック スタックからどのようにプッシュおよびポップされるかについて説明しています。

新しいアクティビティを開始すると、バック スタックにプッシュされ、フォーカスを取得します。

現在のアクティビティが別のアクティビティを開始すると、新しいアクティビティがスタックの一番上にプッシュされ、フォーカスされます。前のアクティビティはスタックに残りますが、停止されます。

戻るボタンをクリックすると、現在のアクティビティがスタックからポップされ、破棄されます。したがって、バック スタック内の前のアクティビティがフォーカスされます。

注: 複数のタスクを一度にバックグラウンドで保持できます。ただし、ユーザーが同時に多くのバックグラウンド タスクを実行している場合、システムはメモリを回復するためにバックグラウンド アクティビティを破棄し始め、アクティビティの状態が失われる可能性があります。アクティビティの状態については、次のセクションを参照してください。

于 2013-03-25T15:45:32.233 に答える