Android:数据存储到 SharedPreference

Android主要提供了3种方法用于得到 SharedPreferences 对象:

  1. Context类中的 getSharedPreferences() 方法
  2. Activity类中的getPreference() 方法
  3. PreferenceManager类中的 getDefaultSharePreference() 方法

Context类中的 getSharedPreferences() 方法
两个参数:
第1个用于指定SharedPreference 文件的名称,如果指定的文件不存在则会创建一个。第2个参数用于指定操作模式,两种模式可选择:

  • MODE_PRIVATE : 默认操作模式,和直接传入 0 效果相同;
  • MODE_MULTI_PROCESS : 一般用于多个进程中对同一个 SharedPreference 文件进行读写的情况。

Activity类中的getPreference() 方法
只接收一个操作模式,因为使用这个方法时会自动将当前Activity的类名作为 SharedPreference 的文件名。

PreferenceManager类中的 getDefaultSharePreference() 方法
静态方法,接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreFerences 文件。

得到 SharedPreferences 对象后,开始向 SharedPreferences 文件中存储数据了,主要分3步:

  1. 调用 SharedPreference 对象的 edit() 方法来获取一个 SharedPreference.Editor 对象;
  2. 向 SharedPreference.Editor 对象中添加数据,比如添加一个boolean型数据就使用putBoolean 方法,添加一个字符串则使用putString() 方法;
  3. 调用 commit9() 方法将添加的数据提交,完成数据存储。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public class MainActivity extends AppCompatActivity {

private Button bt_get;
private Button save;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

bt_get = (Button)findViewById(R.id.bt_get);
save = (Button)findViewById(R.id.save);

save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

//通过getSharedPreferences()方法指定SharedPreferences文件名为data,并得到SharePreferences.Editor对象
SharedPreferences.Editor editor = getSharedPreferences("data" , MODE_PRIVATE).edit();

//添加三条不同类型数据
editor.putString("name" , "huanglong");
editor.putBoolean("married", false);
editor.putInt("age", 13);
editor.commit(); //提交

bt_get.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

//获取前面存储的数据
SharedPreferences btget = getSharedPreferences("data" , MODE_PRIVATE);
String name = btget.getString("name", "");
int age = btget.getInt("age", 0);
Boolean married = btget.getBoolean("married" , false);

//打印出来
Log.d("ManActivity" , "name is" +name);
Log.d("ManActivity" , "age is" +age);
Log.d("ManActivity" , "married" +married);

}
});
}
});
}




}