8

活動のライフサイクルをさらに理解するために次の記事を参照していたところ、「活動記録オブジェクト」というフレーズを見つけました。

引用記事:

アクティビティが隠蔽されている場合、Activity オブジェクトは存在しませんが 、アクティビティ レコード オブジェクトは OS 内に存続します。OS は、必要に応じてアクティビティ レコードを使用してアクティビティを復元できます。


onSaveInstanceState(...) が呼び出されると、データが Bundle オブジェクトに保存されます。その Bundle オブジェクトは、OS によってアクティビティのアクティビティ レコードに詰め込まれます。

「アクティビティレコードオブジェクト」の意味を正確に定義できる人はいますか?OSはアクティビティを強制終了するだけでかなりの量のメモリを節約できますか?

4

1 に答える 1

11

私はあなたがここで引用した一節を書きました (これは、Brian Hardyと私が書いた本Android Programming: The Big Nerd Ranch Guideからのものです)。ご質問にお答えできるかどうか見てみましょう。

「アクティビティ レコード オブジェクト」(通常は「アクティビティ レコード」と呼びます) は、アプリケーション開発者には表示されません。代わりに、アクティビティを追跡するために使用される Android OS に存在します。そのオブジェクトは、保存されたインスタンスの状態が保存される場所です。アクティビティを最初に開始したインテントが存在する場所であり、受け取ったアクティビティの結果が配信される前に保存されます。さらに重要なことは、アクティビティ レコードが有効な場合、アプリケーションでアクティビティ インスタンスを再構成するために使用される可能性があることです。

アクティビティ レコード オブジェクトは、Activity クラスのインスタンスよりもはるかに安く維持できます。Activity インスタンスにはビュー階層全体があり、それ自体で数メガバイトのメモリを簡単に消費する可能性があります。その上、Activity インスタンスには、アプリのプロセスが存在する必要があります。したがって、Activity インスタンスが残っていない場合、Android はプロセス全体を取り除くこともできます。

于 2013-08-08T15:12:33.090 に答える