数据持久化就是指将那些内存中的瞬时数据保存到持久化设备中(如手机文件、数据库等),当关机,停电后,数据不丢失。
Android 系统中主要提供了三种方式用于实现数据持久化功能,分别是:
1、文件存储
2、SharedPreference 存储
3、数据库存储。
今天我们学习第二种存储方式:SharedPreferences存储。
SharedPreferences 是使用键值对的方式来存储数据的,使用 SharedPreferences来进行数据持久化要比使用文件方便很多。
理论指导:
一、首先需要获取到SharedPreferences对象。
Android中主要提供了三种方法用于得到 SharedPreferences 对象,分别是:
1. Context 类中的 getSharedPreferences(String name, int mode)方法
a、第一个参数name:用于指定 SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,
SharedPreferences 文件都是存放在/data/data/<package
name>/shared_prefs/目录下的。
b、第二个参数mode:用于指定操作模式,主要有两种模式可以选择,
1)MODE_PRIVATE :默认的操作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写
2)MODE_MULTI_PROCESS;则一般是用于会有多个进程中对同一个 SharedPreferences文件进行读写的情况。
2. Activity 类中的 getPreferences(int mode)方法
它只接收一个参数mode(操作模式,同上),使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。
3. PreferenceManager 类中的 getDefaultSharedPreferences()方法
静态方法,接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件。
二、得到了 SharedPreferences对象之后, 就可以开始向 SharedPreferences文件中存储数据了。
三、具体实现共分三步实现
1. 调用 SharedPreferences 对象的 edit()方法来获取一个 SharedPreferences.Editor 对象。
2. 向 SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用putBoolean 方法,添加一个字符串则使用 putString()方法,以此类推。
3. 调用 commit()方法将添加的数据提交,从而完成数据存储操作。
实战演练:
activity_main.xml中的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/save_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="保存数据" />
</LinearLayout>
MainActivity中的代码:
package com.demo.sharedprefrececesdemo;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button saveData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
saveData = (Button) findViewById(R.id.save_data);
saveData.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/**
* 1、获取SharedPreferences.Editor 对象
*/
SharedPreferences.Editor editor = getSharedPreferences("data",
MODE_PRIVATE).edit();
/**
* 2、向 SharedPreferences.Editor 对象中添加数据
*/
editor.putString("name", "张三");
editor.putInt("age", 10);
editor.putBoolean("childen", true);
/**
* 3、调用 commit()方法将添加的数据提交,完成数据存储操作
*/
editor.commit();
}
});
}
}
结果:
1、保存前:
2、保存数据后:
3、保存的数据:
项目下载:
SharedPreferences存储demo下载
SharedPreferences 存储中的查看保存完整功能请参见:
数据持久化之二:SharedPreferences 存储(下)