6.3 SharedPreferences存储
SharedPreferences使用键值对的方式来存储数据。同时支持多种不同的数据类型。
6.3.1 将数据存储到SharedPreferences中
得到SharedPreferces对象的三种方式:
1.Context类中的getSharedPreferences()方法
接收两个参数,第一个为用于指定SharedPreferences文件的名称,指定文件不存在则会创建一个。
第二个用于制定操作模式,MODE_PRIVATE。
2.Activity类中的getPreferences()方法
只接收操作模式,会自动将当前类名作为SharedPreferences的文件名
3.PreferenceManager类中的getDefaultSharedPrefences()方法
静态方法,接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件,得到了SharedPreferences对象之后,开始向SharedPrefences文件中存储数据,分为3步:
a.调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象
b.向SharedPreferences.Editor对象中添加数据,putString(),putInt(),putBoolean()......
c.调用apply()方法将添加的数据提交,完成操作
新建项目SharedPreferencesTest项目
添加一个Button
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent"> <Button android:id="@+id/save" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Save"/> </LinearLayout>
修改MainActivity中的代码
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.save); button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit(); editor.putString("name", "WenWen"); editor.putInt("age", 18); editor.putBoolean("married", false); editor.apply(); } }); }
用part 1中同样的方法将data保存到电脑中并查看
以xml格式来进行管理数据
6.3.2 从SharedPreferences中读取数据
SharePreferences对象中提供了一系列的get方法,get方法接收两个参数,第一个为键,第二个为默认参数,即找不到对应的键值返回的默认值
界面中加个Button用于读取数据
<Button android:id="@+id/resotre_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Restore data"/>
修改MainActivity中的代码
Button restoreData = (Button)findViewById(R.id.resotre_data); restoreData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SharedPreferences pref = getSharedPreferences("data", MODE_PRIVATE); String name = pref.getString("name",""); int age = pref.getInt("age", 0); boolean married = pref.getBoolean("married", false); Log.d("MainActivity", "name is " + name); Log.d("MainActivity", "age is " + age); Log.d("MainActivity", "marride is " + married); } });
运行程序: