2016-05-09 5 views
2

したがって、Activity.onCreate()Bundleをパラメータとし、デフォルトではsavedInstanceStateと呼ばれます。アプリが新しいバージョンに更新されるとsavedInstanceStateは保持されますか? (ちょうどGoogle Playを通して言いましょう)。 savedInstanceStateにデータを入れてアプリを新しいバージョンに更新してもデータにアクセスできますか?更新時にsavedInstanceStateは保持されますか?

+1

古いバージョンと新しいアプリケーションバージョンの間にカスタムの 'Parcelable'クラスが一貫しているという保証はないので、私はそれが保持されているのか疑問です。つまり、私はこのシナリオをテストしていません。 – CommonsWare

答えて

1

保存されたインスタンスデータは、アプリケーションの更新中は保持されません。これは実際には異なるバージョン間でデータ型の潜在的な非互換性のリスクがあるだけでなく、新しいバイナリが全く新しいアプリケーションになり、ちょうどpackageIdと署名証明書を共有できるためです。だから、新しいバージョンでは再起動が必要です - 更新後にユーザーは新鮮なの状態で始まります。これは、更新を開始する前の状態に復元しようとするよりもはるかに安全です(単純に不可能かもしれません)。

したがって、更新によってデータが影響を受けないようにするには、データベースまたは共有プリファレンスを使用する方がはるかに優れています。

1

documentation状態:

システムが原因(むしろ通常のアプリの動作よりも)システム 制約活性を破壊する場合 実際のアクティビティインスタンスを行っているが、その後、システムは が存在することを覚えユーザーがそれに戻ってナビゲートすると、システムは、アクティビティが破棄されたときのアクティビティの状態を示すセーブされたデータのセットを使用して、アクティビティの新しいインスタンスを作成します( )。 システムが以前の状態を復元するために使用する保存されたデータは、「インスタンス 状態」と呼ばれ、バンドル オブジェクトに格納されたキーと値のペアの集合です。

ただし、更新中にアプリケーションが強制終了された場合の動作については言及していません。

安全に情報を保存するには、SharedPreferencesを使用してください。

関連する問題