Androidで「アプリケーション設定」を行うための最良の方法は何ですか?[閉まっている]


108

Androidアプリケーションの一部のアプリケーション設定(APIのURLやテスト用の設定など)を保存したい。

私は主に.NET開発者として働いているapp.configため、この目的でファイルを使用することに慣れています。Androidでそれを行うための良い方法は何ですか?

回答:


148

多くのアプリケーションは、特定のアプリケーションまたはアクティビティの設定に関するユーザー設定をキャプチャする方法を提供する場合があります。これをサポートするために、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();

Editorは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のデータストレージに関する投稿を確認してください。


1
ありがとう。私がしなければならないことは、私が後の目的のためにXMLファイルを使用することです(または最初にロードするデータとしてXMLを使用するかもしれません)。
ティムアーモンド2010

1
initにはxmlファイルを使用できます。あなたは次のようなものを呼び出す必要がありますPreferenceManager.setDefaultValues(this, R.xml.profiles_preferences, false);
Pentium10

3
このガイドも役に立ちます:developer.android.com/guide/topics/ui/settings.html
Hung Tran

1
+1。覚えておくべきほんの少しだけ。preferencesオブジェクトに値を設定した後、前者がバックグラウンドでの保存を処理するため、呼び出すことeditor.apply()をお勧めeditor.commit()します。
Anindya Chatterjee

2
私はここで少し混乱しています。sharedPreferencesは、アプリの設定ではなく、アプリのユーザー設定を保存するためのものです。ユーザー(そして私も)は、アプリの設定(例:APIのURL、またはアプリが適切に機能するために使用するその他の設定)をどこに保存するのか疑問に思っていました。
albanx 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.