そもそもPreferenceとは
Androidアプリで使える簡易的データ保存方法。
アプリがデータを保存する方法として大きく以下の様な方法があるとのこと。
- ファイルとして保存
- データベース(SQLite)で保存
- Preferenceで保存
一番基本はファイルで保存、データが多かったり複雑な処理等を要する場合はデータベースを使うべきだが、一番楽にそしてシンプルにデータを保存したければPreference一択。
実際に使ってみる
マジでシンプルだからそのまま載せとく。データはキーとバリューが一緒になって保存される。
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button saveButton = (Button)findViewById(R.id.saveBtn); saveButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { saveButtonClick(); } }); Button loadButton = (Button)findViewById(R.id.loadBtn); loadButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { loadButtonClick(); } }); } public void saveButtonClick(){ EditText editText = (EditText)findViewById(R.id.editText1); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); sp.edit().putString("SaveString", editText.getText().toString()).commit(); } public void loadButtonClick(){ EditText editText = (EditText)findViewById(R.id.editText1); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); editText.setText(sp.getString("SaveString", null), BufferType.NORMAL); } }
上のサンプルコードのsaveButtonClickメソッド内のこの2行。
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); sp.edit().putString("SaveString", editText.getText().toString()).commit();
分解すると以下のことをしている。最後にcommitしてやらないと保存はされないので注意。
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor spEdit = sp.edit(); spEdit.putString("SaveString", editText.getText().toString()); spEdit.commit();
保存できる型は
大抵の型に対応してる。
- boolean
- float
- int
- long
- String
保存先は
Preferenceのデータはxml形式で保存される。その保存先は「/data/data/パッケージ名/shared_prefs/」だが、機種によって一部異なるっぽい。
ちなみにこんな感じ。今回は「SaveString」がキーで、「テスト中」がバリュー(値)となっている。
データを全削除したい
sp.edit().clear();