3

私は、アプリケーションを強制終了するメモリを消費するアプリケーションを実行することにより、プログラムの動作をテストしてきました。onSaveInstanceStateのバンドルはどこに保存されていますか?への回答を読んだ後 、私は私が見ている結果のいくつかについて混乱しています。

そのリンクに示されている両方の回答は、メモリを再利用する必要があるときに、アプリケーションではなく個々のアクティビティが破棄されることを意味します。しかし、http://developer.android.com/guide/components/processes-and-threads.htmlによると、プロセス(個々のアクティビティではなく)が強制終了されます。また、通常、すべてのコンポーネントが同じプロセスで実行されるため、メモリが少ない状況ではアプリケーション全体が強制終了されると思います。私のテストは、メモリを食べるアプリを実行したときにプロセスが実行されていないという点で、Androidのドキュメントと一致しています。

それで、プロセス全体が殺された場合、その質問で与えられた答えが正しくないと仮定して私は正しいですか?しかし、もしそうなら、プロセスが強制終了された場合にアプリケーションを再開するときに、バンドルを維持しているのは何ですか?ディスクに書き込まれないことが本当に保証されていますか?

4

2 に答える 2

7

そのリンクに示されている両方の回答は、メモリを再利用する必要があるときに、アプリケーションではなく個々のアクティビティが破棄されることを意味します。

私自身、この点について長い間混乱していましたが、それは正しくありません。

IMHOは、その質問に対する3つの回答のうちせいぜい1つで、「メモリを再利用する必要があるときに、アプリケーションではなく、個々のアクティビティが破棄されることを意味します」。

しかし、もしそうなら、プロセスが強制終了された場合にアプリケーションを再開するときに、バンドルを維持しているのは何ですか?

時には、「[あなたの]バンドルを維持する」ことは何もありません。また、OSの中心となるプロセスは、「[あなたの]バンドルを維持する」ことです。

ディスクに書き込まれないことが本当に保証されていますか?

ディスクに書き込まれるかどうかが文書化されていない限り、「保証」されません。ディスクに書き込まれる場合、OSプロセス(自分のプロセスではない)によって書き込まれ、ファイルは他のプロセスで読み取れないようにする必要があります。

于 2012-09-18T00:15:16.207 に答える
0

今日のように、ドキュメントには、保存されたインスタンスの状態がディスクにシリアル化されると記載されています。

ここに画像の説明を入力してください

https://developer.android.com/topic/libraries/architecture/saving-states#options_for_preserving_ui_state

于 2020-04-13T21:37:33.310 に答える