アプリケーションナビゲーションをクリックすると、(次のコードを使用して)新しいインテントを起動するたびにAndroidがアクティビティの新しいインスタンスを作成していることがわかります。
Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent);
私が読んだことによると、これはデフォルトの動作のようです。これは、アプリケーションの履歴を維持するために、ヒープに複数のインスタンスが割り当てられることを意味すると思います。ただし、Patrick Dubroyは、メモリ管理に関する彼のビデオで、メモリリークがない限り、アクティビティの1つのインスタンスのみがヒープダンプに表示される必要があると述べています。
私の質問は2つあります。インテントが起動されるたびに新しいアクティビティインスタンスが作成されるというのは正しいですか?その場合、ヒープダンプに複数のインスタンスが表示されている場合は、メモリリークがあることを示していますか?
タスクとバックスタックガイドに 基づく更新:
バックスタックのアクティビティは再配置されないため、アプリケーションでユーザーが複数のアクティビティから特定のアクティビティを開始できる場合、そのアクティビティの新しいインスタンスが作成され、スタックにプッシュされます(アクティビティの以前のインスタンスを取得するのではありません)。頂点に)。そのため、アプリケーション内の1つのアクティビティが複数回インスタンス化される場合があります(異なるタスクからでも)