我们平常在QQ或微信上登录账号时会发现,如果之前登录过账号,则在用户名的输入框中会存在之前输入过的账号信息,这些用户名信息是如何自动显示在界面输入框中的呢?
其实自动在QQ或微信的登录界面显示的用户名信息是存储在QQ或微信的本地数据。
当第一次登录账号时,程序会读取登录时的用户名信息,并将该信息存储到本地,存储数据时常用的两种方式是SharedPreferences文件存储与SQLite数据库存储。
一般少量的数据会存储在SharedPreferences文件中,大量的数据还是需要存储在SQLite数据库中的,所以用户名信息会存储在SharedPreferences文件中。
SharedPreferences是Android平台上一个轻量级的存储类,当程序中有一些少量数据需要持久化存储时,可以使用SharedPreferences类进行存储。
接下来我们就一起开启通往Android数据存储之SharedPreferences的学习旅程吧!
1、将数据存入SharedPreferences文件中
使用SharedPreferences类存储数据时,首先需要调用getSharedPreferences(String name,int mode)方法获取实例对象。
由于该对象本身只能获取数据,不能对数据进行存储和修改,所以需要调用SharedPreferences类的edit()方法获取到可编辑的Editor对象,最后通过该对象的putXxx()方法存储数据,示例代码如下面这样:
//获取sp对象,参数data表示文件名,MODE_PRIVATE表示文件操作模式
SharedPreferences sp = getSharedPreferences("data",MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit(); // 获取编辑器
editor.putString("name", "传智播客"); // 存入String类型数据
editor.putInt("age", 8); // 存入int类型数据
editor.commit(); // 提交修改
由上述代码可知,Editor对象是以key/value的形式保存数据的,并且根据数据类型的不同,会调用不同的方法。需要注意的是,操作完数据后,一定要调用commit()方法进行数据提交,否则所有操作不生效。
注意:SharedPreferences中的Editor编辑器是通过key/value(键值对)的形式将数据保存在data/data/<packagename>/shared_prefs文件夹下XML文件中,其中value值只能是float、int、long、boolean、String、Set<String>类型数据。
2、读取与删除SharedPreferences文件中的数据
前面讲解了如何将数据存入到SharedPreferences文件中,当我们需要使用或删除SharedPreferences文件中的数据时,我们该如何读取或删除SharedPreferences文件中的数据呢?下面详细地介绍如何读取和删除SharedPreferences文件中的数据。
(1)读取 SharedPreferences文件中的数据
读取SharedPreferences文件中的数据非常简单,只需要获取到SharedPreferences对象,然后通过该对象的getXXX()方法获取到相应key的值即可,示例代码如下面这样:
SharedPreferences sp = getSharedPreferences("data",MODE_PRIVATE);
String data = sp.getString("name",""); // 获取用户名
需要注意的是,getXXX()方法的第二个参数为缺省值,如果sp中不存在该key,将返回缺省值,例如getString(“name”, “”),若name不存在则key就返回空字符串。
(2)删除SharedPreferences文件中的数据
如果需要删除SharedPreferences中的数据,则只需要调用Editor对象的remove(String key)方法或者clear()方法即可,示例代码如下面这样:
editor.remove("name"); // 删除一条数据
editor.clear(); // 删除所有数据
注意:
SharedPreferences使用很简单,但一定要注意以下两点:
●获取数据的key值与存入数据的key值的数据类型要一致,否则查找不到数据。
●保存SharedPreferences的key值时,可以用静态变量保存,以免存储、删除时写错了。如:private static final String key = “itcast”;
通过本篇文章,希望大家能够掌握如何存储程序中的少量数据,如何将数据存储到SharedPreferences文件中,并且可以对存储在SharedPreferences文件中的数据进行读取和删除操作。