私が最初にアプリを作成して公開したとき、アプリケーション設定を処理するためにカスタム作成されたアクティビティを使用していました。次のように、カスタムファイル名を使用して共有設定を保存しました。
getSharedPreferences("custom_settings_file",MODE_PRIVATE);
しかし今、私は自分のアプリをリファクタリングしていて、PreferenceActivity
またはPreferenceFragmentとPreferenceScreen
セクション付きのxmlファイルを実装したいと思います。私が見たすべてのチュートリアルまたは例は使用しています
getDefaultSharedPreferences(context);
PreferenceActivityはデフォルトのファイル名を想定して設定を保存し、別のファイル名を使用するように指示する方法がないため、共有設定を取得します(少なくとも、ドキュメントを1時間検索して読んだ後、ファイル名を見つけることができませんでした)。
だから今私は問題を抱えています。新しいデフォルトファイルを単に使用する場合、新しいアプリケーションは「custom_settings_file」について何も知らないため、アプリの既存のユーザーはアプリを更新するときに設定を失います。アプリの更新時に古いファイルから新しいファイルにデータを移動するための最良の方法は何でしょうか?
これが私が思いつくことができる可能なオプションです:
- クラスを拡張
Application
し、onCreate()にコードを実装して、アプリを起動するたびに「custom_settings_file」の存在を確認し、その内容を新しいものに移動するようにします。ただし、アプリを起動するたびにコードブロックを実行すると、1回だけ実行する必要がある操作に多くの処理リソースが浪費されているように見えます。 - 古い設定がなくなったことをユーザーに通知するだけです。しかし、明らかにこれは受け入れられません。
オプション1よりも優れた解決策はありますか?おそらく誰かがすでに同様の問題に直面していますか?