5

質問で読んでくれてありがとう、本当に初心者っぽいものですが...

特にアクティビティが他のアクティビティを通じて初期化される場合、Androidシステムはアクティビティの初期化に関してどのようにメモリを管理しますか?これはしばらくの間私の心の中で長引く質問でしたが、例を挙げて説明しようと思います。

ABCの3つのアクティビティがあり、アクティビティAは、アプリケーションを初めて起動したときに起動されるアクティビティであるとします。ここで、アクティビティAにアクティビティBCに移動するためのボタンがあり、それらのアクティビティはAndroidのstartActivity()関数を使用して起動され、インスタンスを渡すとしIntentます。同様に、アクティビティBCに、対応するアクティビティを起動するためのボタンがあるとします...これまでのところ意味がありますか?

さて、次にtoを使用するstartActivity()と:

  • アクティビティAからアクティビティBを開始します
  • 次に、アクティビティBからアクティビティCを開始します
  • 次に、アクティビティCからアクティビティAを開始します
  • 次に、上記の手順を無期限に繰り返します(つまり、円を描くように回ります)

... Androidシステムは、アクティビティがすでに開始されていることを「認識」し、アクティビティを再初期化してメモリをどんどん殺すのではなく、onRestart()機能のようなものを「アクティビティのすでに初期化されたインスタンスに「切り替え」ますか?

本当に単純な質問/問題のかなりの説明...これがすでにどこかで質問され、答えられている場合はお詫びします... Android開発者のAndroidトレーニングセクションを読んでいても、他の場所で明確な答えを見つけることができませんでしたサイト。

4

1 に答える 1

7

答えは:それは異なります。:-)

アクティビティAB、およびCの標準設定を使用すると、アプリケーションのメモリが不足します。その理由は、Androidは、ユーザーが戻るボタンを押して戻ることができる「バックスタック」に各アクティビティを保持するためです。

ただし、ファイルでandroid:launchModeアクティビティのをに設定すると、Androidはアクティビティを呼び出すことにより、実行中のアクティビティのインスタンスにインテントをルーティングします。singleTopAndroidManifest.xmlonNewIntent()

起動モードに関する詳細については、 Androidデベロッパードキュメントをご覧ください。

于 2012-09-16T16:58:46.037 に答える