Android 中最简单的数据存储方式 : SharedPreferences
SharedPreferences 数据存储处理实际上时对一个个key——value 数据对的处理
使用SharedPreferences 保存key-value 对的一般步骤:
1. 使用Activity 类 的 getSharePreferences方法获取SharePreferences 对象,指定文件名和访问权限
2.获得SharePreferences.Editor 对象,并调用该对象的putXXX 方法保存key-value 对
3. 通过SharePreferences.Editor 的commit 方法提交保存 key-value 对
示例一:
认识并使用
1 package com.example.sharedpreferences;
2
3 import androidx.appcompat.app.AppCompatActivity;
4
5 import android.content.Context;
6 import android.content.SharedPreferences;
7 import android.os.Bundle;
8 import android.util.Log;
9
10
11 public class MainActivity extends AppCompatActivity {
12
13 @Override
14 protected void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.activity_main);
17
18 //SharedPreferences 接口
19 21 // 一个参数
22 SharedPreferences shp=getPreferences(Context.MODE_PRIVATE);
23 SharedPreferences.Editor editor=shp.edit() ;
24 editor.putInt("NUMBER",100); // key -value
25 //均可 提交
26 //editor.commit();
27 //非同步提交
28 editor.apply();
29
30 int x =shp.getInt("NUMBER",0);
31 String TAG="mylog";
32 Log.d(TAG, "onCreate: "+x);
33
34
35 }
36 }
运行程序之后,找到设备存储位置

打开 Mainactivity .xml 该文件名为默认的
会找到命名为 NUMBER 的 int 类型数据 数值为100
1 <?xml version='1.0' encoding='utf-8' standalone='yes' ?> 2 <map> 3 <int name="NUMBER" value="100" /> 4 </map>
2.使用 getSharedPreferences 方法
1 package com.example.sharedpreferences;
2
3 import androidx.appcompat.app.AppCompatActivity;
4
5 import android.content.Context;
6 import android.content.SharedPreferences;
7 import android.os.Bundle;
8 import android.util.Log;
9
10
11 public class MainActivity extends AppCompatActivity {
12
13 @Override
14 protected void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.activity_main);
17
18 //SharedPreferences 接口
19 //两个参数
20 SharedPreferences shp = getSharedPreferences("MY_data",Context.MODE_PRIVATE);
21 // 一个参数
22 // SharedPreferences shp=getPreferences(Context.MODE_PRIVATE);
23 SharedPreferences.Editor editor=shp.edit() ;
24 editor.putInt("NUMBER",6 00); // key -value
25 //均可 提交
26 //editor.commit();
27 //非同步提交
28 editor.apply();
29
30 int x =shp.getInt("NUMBER",0);
31 String TAG="mylog";
32 Log.d(TAG, "onCreate: "+x);
33
34
35 }
36 }
存储为自定义名称的 xml 文件

2. 创建一个专门的数据类来管理数据
MyData类
1 package com.example.sharedpreferences;
2
3 import android.content.Context;
4 import android.content.SharedPreferences;
5
6 public class MyData {
7
8 public int number;
9
10 private Context context;
11 public MyData(Context context){
12 this.context=context;
13 }
14
15 public void save(){
16 String name=context.getResources().getString(R.string.MY_data);
17 SharedPreferences shp= context.getSharedPreferences(name,Context.MODE_PRIVATE);
18 SharedPreferences.Editor editor=shp.edit();
19 String key=context.getResources().getString(R.string.MY_KEY);
20 editor.putInt(key,number);
21 editor.apply();
22 };
23
24 public int load(){ //读取
25 String name=context.getResources().getString(R.string.MY_data);
26 SharedPreferences shp= context.getSharedPreferences(name,Context.MODE_PRIVATE);
27 String key=context.getResources().getString(R.string.MY_KEY);
28 //defValue : 缺省值
29 int x=shp.getInt(key,context.getResources().getInteger(R.integer.defValue));
30 number=x;
31 return x;
32
33 }
34
35 }
MainActivity.java
1 package com.example.sharedpreferences;
2
3 import androidx.appcompat.app.AppCompatActivity;
4
5 import android.content.Context;
6 import android.content.SharedPreferences;
7 import android.os.Bundle;
8 import android.util.Log;
9
10
11 public class MainActivity extends AppCompatActivity {
12
13 @Override
14 protected void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.activity_main);
17 // 不好 this 表示 activity 的引用 有可能导致内存泄漏 activity 经常被摧毁重建
18 // MyData myData = new MyData(this);
19 // ApplicationContext() 可以理解为指向app的顶级引用 单个 永远存在的单例
20 MyData myData = new MyData(getApplicationContext());
21
22 myData.number=1000;
23 myData.save();
24 int y=myData.load();
25 String TAG="mylog";
26 Log.d(TAG, "onCreate: "+y);
27
28
29
30 //SharedPreferences 接口
31 //两个参数
32 /* SharedPreferences shp = getSharedPreferences("MY_data",Context.MODE_PRIVATE);
33 // 一个参数
34 // SharedPreferences shp=getPreferences(Context.MODE_PRIVATE);
35 SharedPreferences.Editor editor=shp.edit() ;
36 editor.putInt("NUMBER",600); // key -value
37 //均可 提交
38 //editor.commit();
39 //非同步提交
40 editor.apply();
41
42 int x =shp.getInt("NUMBER",0);
43 String TAG="mylog";
44 Log.d(TAG, "onCreate: "+x);*/
45
46
47
48
49 }
50 }
在编写程序当中,将某些变量设置在Resource 的Values 目录当中,便于数据管理,提高程序的可维护性
string.xml
<resources>
<string name="app_name">SharedPreferences</string>
<string name="MY_data">my_data</string>
<string name="MY_KEY">my_key</string>
</resources>
int.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 <integer name="defValue">0</integer> 4 </resources>
来源:https://www.cnblogs.com/cxy0210/p/12337321.html