[解決済み] Androidアプリをアップデートすると、SharedPreferencesはどうなりますか?
質問
アプリのSharedPreferencesにユーザー設定を保存しています。Google Play ストア経由でアプリを新しいバージョンに更新した場合、SharedPreferences はどうなりますか。
アップデート後もSharedPreferncesは存在するのでしょうか、それとも削除されるのでしょうか。
今のところ、Web や Stackoverflow では回答が見つかりませんでした。
このプロセスを説明するいくつかのリンクを紹介してもらえますか?
編集してください。 一方、私は他の答えも見つけました。 アップデート/アンインストール時の SharedPreferences の挙動
編集2: 最初にこの質問をしたときはかなり時間が経っていたので、最近、Android 6.0 (API 23) 以降、自動バックアップ機能を使用して、次のことも可能であることを知りました。 セキュア で説明されているように、共有されたプリファレンスを Googleはこちら .
を追加するだけです。
allowBackup="true"
を追加するだけです。
AndroidManifest.xml
ファイルに記述します。
どのように解決するのですか?
クリスティアン ここで says: ユーザがアップデートをインストールすると、アプリケーションのデータは残ります。
しかし、それは同じ
package name
でないと、以前のアプリのアップデートとして検出できません。
のエボマイク アプリのアップデートにより、古いアプリのデータが失われる可能性があることをAndroidユーザーに警告する? が言っています。
率直に言って、アップグレードによるデータの損失は受け入れがたいものです。
編集 :
通常 の場合、SharedPreferences (および他のユーザーデータ) はアップデート処理中も保持されますが、時々、何らかの理由で " 不明 の問題で、データが失われることがあり、それはあなたのコントロールの及ばないところだと思います。そこで、SharedPreferences が保持されることを単純に信じることができます ( こちらをご覧ください ).
もし、アップグレード中にユーザーのデータが消去されるのを避けたいなら、メインデータを外部ストレージ(SDカードなどの取り外し可能なストレージメディアや、取り外し不可能な内蔵ストレージなど)に保存し、アプリのプライベートデータにはしない必要があります。
もし、あなたが
アプリをアップグレードすると、どんなことが起こるのでしょうか?
これは、複雑で相対的なものです。
Android Security
,
Application signing
,
copy protection
などがあります。つまり、上記のフィールドでアプリの状態を変更すると、異なる結果になるということです。
例えば
CHANGED COPY PROTECTION FROM ON to OFF OR OFF to ON
とすると、アプリは更新されますが、共有されている設定がすべて失われ、ファイルへのアクセスが不可能になり、...。
といった具合で、アプリの更新には注意が必要です。
being considered
を更新した場合(
変更できないもの
).
また、データベースのデータを削除してしまう可能性があるため、コードには注意が必要です( プリロードされたSQLiteでアプリを更新する ).
しかし、最終的には、注意深くすれば、言うことができます。
<ブロッククオート更新プロセスは apk ファイルを置き換えるだけです (そして、その中にあるもの、たとえば描画ファイルなど)。 を置き換えるだけで、データベース、共有設定、および実行時に生成されたその他のファイル (おそらくこの場合) は変更されません。 などの実行時に生成されるファイルは変更されません(おそらくこの場合 この場合、新しいアプリは前のアプリのUIDと等しいUIDでインストールされます)。 と同じUIDでインストールされます)。
詳しくはこちらのページをご覧ください。
助けてください! アプリケーションをアップデートすると、保存されているSharedPreferencesが削除されてしまいます。
マーケットでのコピー防止機能により、更新後にファイルへのアクセスが完全に中断される
どなたか、アプリの更新プロセスを説明していただけませんか?
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] Androidでアプリの共有設定データを削除する方法
-
[解決済み] SharedPreferencesのcommit()とapply()の違いは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] Travis.yml ./gradlew : パーミッションが拒否されました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] データベースでリサイクルビューを使用する
-
[解決済み] TabLayoutに対応したandroidデザインでタブテキストのフォントを変更する
-
[解決済み] 文字サイズとアンドロイドの画面サイズの違い
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] EditTextの右側のDrawableにonClickListenerを設定する [重複] [重複
-
[解決済み] アダプタからActivityメソッドを呼び出す
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] 文字列リソースにHTML?