web-dev-qa-db-ja.com

androidでデータを永続化する

私のアプリケーションには、アプリケーションの起動時に次回利用できるアプリケーション固有の設定がいくつかあります。

言い換えれば、アプリケーションサイクルのセッション全体でデータを利用できるようにしたいのです。

Database(sqlite)を使用せずにこれを実現できますか。

58
Girish

多くのアプリケーションは、特定のアプリケーションまたはアクティビティの設定に関するユーザー設定をキャプチャする方法を提供します。これをサポートするために、AndroidはシンプルなAPIセットを提供します。

プリファレンスは通常、名前と値のペアです。これらは、アプリケーションのさまざまなアクティビティで「共有設定」として保存できます(現在、プロセス間で共有できないことに注意してください)。または、アクティビティ固有に保存する必要があるものでもかまいません。

  1. 共有設定:共有設定は、アプリケーションのすべてのコンポーネント(アクティビティ、サービスなど)で使用できます。

  2. アクティビティが処理する設定:これらの設定は、アクティビティでのみ使用でき、アプリケーションの他のコンポーネントでは使用できません。

共有設定:

共有設定は、getSharedPreferencesクラスのContextメソッドを使用して管理されます。設定はファイルに保存されます。ファイルは、カスタム(1)またはデフォルトファイル(2)のいずれかです。

(1)ファイル名を指定するときにインスタンスを取得する方法は次のとおりです。

_public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);
_

_MODE_PRIVATE_は、設定の操作モードです。これはデフォルトのモードであり、作成されたファイルには呼び出し元のアプリケーションのみがアクセスします。サポートされている他の2つのモードは_MODE_WORLD_READABLE_および_MODE_WORLD_WRITEABLE_です。 _MODE_WORLD_READABLE_では、他のアプリケーションは作成されたファイルを読み取ることができますが、変更することはできません。 _MODE_WORLD_WRITEABLE_の場合、他のアプリケーションにも作成されたファイルへの書き込み権限があります。

(2)推奨される方法は、ファイル名を指定せずにデフォルトモードで使用することです。

_SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
_

最後に、設定インスタンスを取得したら、次の方法で設定できます保存された値を取得設定から:

_ int storedPreference = preferences.getInt("storedInt", 0);
_

ストア値設定ファイルで_SharedPreference.Editor_オブジェクトを使用する必要があります。 Editorは、SharedPreferenceクラスのネストされたインターフェースです。

_SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
_

エディターは、remove()clear()などのメソッドもサポートして、ファイルから設定値を削除します。

アクティビティ設定:

共有設定は、他のアプリケーションコンポーネントで使用できます。ただし、他のコンポーネントと設定を共有する必要がなく、アクティビティの設定をプライベートにしたい場合。アクティビティのgetPreferences()メソッドの助けを借りてそれを行うことができます。 getPreferenceメソッドは、getSharedPreferences()メソッドを設定ファイル名のアクティビティクラスの名前とともに使用します。

設定を取得するコードは次のとおりです。

_SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);
_

値を保存するコードも、共有設定の場合と同じです。

_SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();
_

データベースにアクティビティ状態を保存するなど、他の方法を使用することもできます。注Android=には、_Android.preference_というパッケージも含まれています。このパッケージは、アプリケーション設定UIを実装するクラスを定義します。

いくつかの例を見るには、Androidの Data Storage 開発者サイトに投稿してください。

101
Pentium10

共有設定を使用する必要があります。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putString("my_pref", "my_value").commit();

そしてそれを取得するには:

String value = prefs.getString("my_pref", "default Value");

これらの設定は永続的であり、設定アクティビティとも統合されています。

19
SirDarius