Android SharedPreference存储

mac2024-03-21  27

sharedPreference属于内部存储,通过调用函数就可实现NVP(名称/值对)的保存和读取。它不仅能保存数据,还能实现不同应用程序间的数据共享。一般用于保存用户的偏好设置,比如设置条目,或保存用户登录信息。 和files/cache一样,数据存储路径是/data/data/包名/shared_prefs,以xml的文件形式保存。

使用步骤:

获取 SharedPreference实例。 SharedPreferences sharedPreferences = getSharedPreferences("SaveSetting", MODE_PRIVATE);

preference_name:SharedPreferences 的名称。 这是它在Android文件系统中保存的文件名称。一般声明为字符串常量以便在代码中多次使用。

public static final String PREFERENCENAME = "SaveSetting";

MODE_PRIVATE指私有模式。 SharedPreference支持三种访问模式:私有(MODE_PRIVATE)、全局读(MODE_WORLD_READABLE)、全局写(MODE_WORLD_WRITEABLE)。私有模式仅可创建的程序有权对其读写;全局读或全局写模式则其他程序也可对其进行读或写操作。

进入编辑模式,通过SharedPreference.Editor类进行修改。 SharedPreferences.Editor editor = sharedPreferences.edit(); 保存数据。支持各种基本数据类型,包括整型、布尔型 浮点型等。 editor.putBoolean("state", isChecked); editor.putString("name", "Tom"); editor.putInt("age", 20); editor.putFloat("height", 1.86f); 调用commit()函数,提交更改。 editor.commit();

保存数据实例

public class PreferenceDemoActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener { private static final String TAG = "PreferenceDemoActivity"; public static final String PREFERENCENAME = "SaveSetting"; private Switch mSwitch_is_allow_app_source; private SharedPreferences mSharedPreferences; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_preference_demo); mSwitch_is_allow_app_source = findViewById(R.id.switch_is_allow_app_source); mSwitch_is_allow_app_source.setOnCheckedChangeListener(this); // 获取实例 mSharedPreferences = getSharedPreferences(PREFERENCENAME, MODE_PRIVATE); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.d(TAG, "onCheckedChanged: isChecked==" + isChecked); // 进入编辑模式 SharedPreferences.Editor editor = mSharedPreferences.edit(); // 保存数据并提交更改 editor.putBoolean("state", isChecked); editor.commit(); } }

保存的数据在/data/data/包名/shared_prefs目录下: SaveSetting.xml文件的内容以键值对的方式保存:

从保存的SharedPreference中读取数据

同样是调用getSharedPreferences()函数,第一个参数指明需要访问的SharedPreference名称。 SharedPreferences sharedPreferences = getSharedPreferences("SaveSetting", MODE_PRIVATE); 通过get()函数获取保存在SharedPreference中的键值对。 第一个参数是NVP的名称,第二个参数是默认值,在无法获取数值时使用。 boolean state = sharedpreferences.getBoolean("state", false); String string = sharedpreferences.getString("name", "defalt name"); int age = sharedpreferences.getInt("age", 20);
最新回复(0)