アプリが初めて実行されたことを認識するためのフラグを保存したい。この簡単な仕事では、データベースを作成したくありません。
これを行う簡単なオプションはありますか?小さな情報だけを保存して読みたい。
SharedPreferences
を使用します。
SharedPreferences preferences = getSharedPreferences("prefName", MODE_PRIVATE);
SharedPreferences.Editor edit= preferences.edit();
edit.putBoolean("isFirstRun", false);
edit.commit();
sharedPreference
またはfiles
を使用してデータを保存しますが、より良いオプションはsharedPreference
です。
検索用
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
保存用
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", true);
editor.commit();
これを行う適切な方法は、Android class SharedPreferences
を使用することです。これは、このようなものに使用されます。
_SharedPreferences settings = getSharedPreferences(NAME_OF_PREFERENCES, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("appPreviouslyStarted", true);
editor.apply();
_
適用することを忘れないでください。そうしないと、設定への変更が保存されません!
異なる_NAME_OF_PREFERENCES
_を使用して、複数の設定を作成できます。設定はデバイスに保存されるため、アプリケーションを閉じた後に利用できます。
まだ作成されていない_NAME_OF_PREFERENCES
_を取得しようとすると、新しいものを作成します。このようなより多くの振る舞いを見る ここ 。
editor.apply()
だけでなくeditor.commit()
も使用できます。唯一の違いは、apply()は、編集が成功したかどうかにかかわらず、boolean
値を返さないことです。そのため、editor.apply()はより高速で一般的に使用されます。
さまざまなモードのすべてを見ることができます ここ 。あなたの場合は_MODE_PRIVATE
_で結構です。
_SharedPreferences settings = getSharedPreferences(NAME_OF_PREFERENCES, MODE_PRIVATE);
boolean silent = settings.getBoolean("silentMode", false);
_
SharedPreferences
オブジェクトから設定を取得するときは、設定が見つからなかったときに返されるデフォルト値を常に指定する必要があります。この場合はfalse
です。
SharedPreference 永続的なストレージを使用することをお勧めします。少量の情報のための非常に簡単で高速な保存/検索。
SharedPreferenceから値を取得するコードを参照してください
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
そしてSharedPreferenceに値を保存する
// We need an Editor object to make preference changes.
// All objects are from Android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
たとえば、1つのクラスを実行できます:(たとえば、オブジェクトのように)
import Android.content.Context;
import Android.content.SharedPreferences;
public class SettingsMain {
Context context;
SharedPreferences preferences;
SharedPreferences.Editor editor;
private static final String PREFER_NAME = "settingsMain";
public static final String KEY_VIBRATE = "switchVibrate";
public SettingsMain(Context context) {
this.context = context;
setPreferences();
}
private void setPreferences(){
preferences = context.getSharedPreferences(PREFER_NAME, context.MODE_PRIVATE);
editor = preferences.edit();
}
public void cleanPreferences(){
editor.clear();
editor.commit();
}
public void setStatusVibrate(Boolean status){
editor.putBoolean(KEY_VIBRATE, status);
editor.commit();
}
public Boolean getstatusVibrate(){
return preferences.getBoolean(KEY_VIBRATE, true);
}
}
あなたの活動の呼び出しで:
public class Home extends AppCompatActivity {
private SettingsMain settings;
private SwitchCompat switchVibrate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.master);
setResources();
getSettings();
}
private void setResources(){
switchVibrate = (SwitchCompat) findViewById(R.id.master_main_body_vibrate_switch);
switchVibrate.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
settings.setStatusVibrate(isChecked);
}
});
}
private void getSettings(){
settings = new SettingsMain(this);
switchVibrate.setChecked(settings.getstatusVibrate());
}
}
static
変数をグローバルに使用するのはどうですか?
あなたはこれを行うことができます このチュートリアルで与えられているように 。一部のフラグを保持するためだけにコンテンツプロバイダーを処理する必要はありません。
それ以外の場合は、Androidによって提供される Shared Preferences をチェックアウトできます。 これが良い例です 始めましょう。
これが私の推薦です。