2011-01-24 10 views
1

Androidのバンドルの説明は言う:Android Bundle = .NETセッション[]?

バンドルには、プログラムの状態を維持して渡すのAndroidの方法です。システムは、(アクティビティの集まりを特徴とする)任意のプログラムがいつでもプリエンプトされる可能性があり、システムリソースが低い場合にはその後殺されることが想定されることを前提として構築される。この問題を処理するには、アクティビティがプリエンプションされるたびにicicleと呼ばれるバンドルが保存されます。

ハッシュテーブルや辞書と同様に、バンドルに追加されるアイテムには、後でデータを取得するためのキーが与えられます(getCharacter(String key)やgetParcelable(String key)などのデータ型固有のメソッドを使用します)。アクティビティを作成するときは、重要な状態情報をonFreezeに与えられたicicleに保存して、一時停止中にkillされた場合にonCreateでプログラムを復元できるようにしてください。

バンドルは.NETのSession []と同じですか?

答えて

2

正確ではありません。

.NETでは、いつでもどこからでもStateオブジェクトにアクセスすることができます。また、その中に配置されているオブジェクトが呼び出されたときにそのオブジェクトがそこに残っていることは間違いありません。ただし、セッションが期限切れになり、ビューステートに何かを保存しない限り、そのデータは失われます。

AndroidはOSの性質上、バンドルを使用するため、状態が保存されているバックグラウンドでアプリケーションを「生きている」状態に保ちますが、アプリケーションがアイドル状態であり、あなたのアプリはリソースを解放する。あなたのアプリケーションプロセスが終了する前に、あなたはアプリケーションに次回起動時に渡されるバンドルにデータを保存する機会を与える(今ではに改名されます)を呼び出すでしょう。 。

+0

したがって、バンドルは辞書のようなデータを保持します。 OK。それはどれくらいの間それを保つのですか?アプリが殺されるまでは?システムがリブートするまで、より長い?永久に? – sandalone

+2

アクティビティの開始または再開時に、バンドルがパラメータとしてアプリケーションに渡されます。何らかの理由でアプリケーションが中断された場合は、onSaveInstanceStateメソッドでバンドルに追加します。バンドルは、onRestoreInstanceStateを使用して再起動すると、再び渡されます。プロセスが強制終了され再起動されると、新しいバンドルが使用されます。要するに、あなたのアプリケーションが実際に生きている間、バンドルは "生きている"だけであり、アプリが殺されると失われます。永続データが必要な場合は、Shared Preferencesを使用します。 – tribe84

+0

今私はそれを得る。感謝! – sandalone