除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,不同于文件的存储方式,SharedPreferences是使用键值对(key-value)数据的方式来存储数据的。而且SharedPreferences还支持多种不同的数据类型存储,因此,使用SharedPreferences来进行数据持久化要比使用文件方便很多,下面我们就来看一下它的具体用法吧。

如何将数据存储到SharedPreferences中
要想使用SharedPreferences来存储数据,首先需要获取到SharedPreferences对象。Android中主要提供了三种方法用于得到SharedPreferences对象。
1.Context类中的getSharedPreferences()方法
此方法接收两个参数,第一个参数用于指定SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences文件都是存放在/data/data//shared_prefs/目录下的。
第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE和MODE_MULTI_PROCESS。MODE_PRIVATE仍然是默认的操作模式,和直接传入0效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。MODE_MULTI_PROCESS则一般是用于会有多个进程中对同一个SharedPreferences文件进行读写的情况。类似地,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE这两种模式已在Android 4.2版本中被废弃。
2.Activity类中的getPreferences()方法
这个方法和Context中的getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为SharedPreferences的文件名。
3.PreferenceManager类中的getDefaultSharedPreferences()方法
这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。
得到了SharedPreferences对象之后,就可以开始向SharedPreferences文件中存储数据了,主要可以分为三步实现。
1.调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。
2.向SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用putBoolean方法,添加一个字符串则使用putString()方法,以此类推。
3.调用commit()方法将添加的数据提交,从而完成数据存储操作。
不知不觉中已经将理论知识介绍得挺多了,那我们就赶快通过一个例子来体验一下SharedPreferences存储的用法吧。
新建一个SharedPreferencesTest项目,然后修改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="Save data"
/>
</LinearLayout>
这里我们只是简单地放置了一个按钮,用于将一些数据存储到SharedPreferences文件当中。
然后修改MainActivity中的代码,如下所示:
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) {
SharedPreferences.Editor editor = getSharedPreferences("data",
MODE_PRIVATE).edit();
editor.putString("name", "Lily");
editor.putInt("age", 26);
editor.putBoolean("married", false);
editor.commit();
}
});
}
}
可以看到,这里首先给按钮注册了一个点击事件,然后在点击事件中通过getSharedPreferences()方法指定SharedPreferences的文件名为data,并得到了SharedPreferences.Editor对象。接着向这个对象中添加了三条不同类型的数据,最后调用commit()方法进行提交,从而完成了数据存储的操作。
那么接下来我们自然要看一看,如何从SharedPreferences文件中去读取这些数据了。
从SharedPreferences中读取数据
SharedPreferences对象中提供了一系列的get方法用于对存储的数据进行读取,每种get方法都对应了SharedPreferences. Editor中的一种put方法,比如读取一个布尔型数据就使用getBoolean()方法,读取一个字符串就使用getString()方法。这些get方法都接收两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值了,第二个参数是默认值,即表示当传入的键找不到对应的值时,会以什么样的默认值进行返回。
我们还是通过例子来实际体验一下吧,仍然是在SharedPreferencesTest项目的基础上继续开发,修改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="Save data"
/>
<Button
android:id="@+id/restore_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Restore data"
/>
</LinearLayout>
这里增加了一个还原数据的按钮,我们希望通过点击这个按钮来从SharedPreferences文件中读取数据。
修改MainActivity中的代码,如下所示:
public class MainActivity extends Activity {
private Button saveData;
private Button restoreData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
saveData = (Button) findViewById(R.id.save_data);
restoreData = (Button) findViewById(R.id.restore_data);
……
restoreData.setOnClickListener(new 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", "married is " + married);
}
});
}
}
可以看到,我们在还原数据按钮的点击事件中首先通过getSharedPreferences()方法得到了SharedPreferences对象,然后分别调用它的getString()、getInt()和getBoolean()方法去获取前面所存储的姓名、年龄和是否已婚,如果没有找到相应的值就会使用方法中传入的默认值来代替,最后通过Log将这些值打印出来。
通过这个简单的例子,我们就了解了如何利用SharedPreferences实现数据存储。相比之下,SharedPreferences存储确实要比文本存储简单方便了许多,应用场景也多了不少,比如很多应用程序中的偏好设置功能其实都使用到了SharedPreferences技术。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# SharedPreferences
# 数据存储
# android studio数据存储建立SQLite数据库实现增删查改
# Android 通过SQLite数据库实现数据存储管理
# Android四种数据存储的应用方式
# Android基础教程数据存储之文件存储
# android使用SharedPreferences进行数据存储
# Android开发教程之ContentProvider数据存储
# 详解Android的网络数据存储
# 5种Android数据存储方式汇总
# 详解Android数据存储之SQLCipher数据库加密
# Android 单例模式实现可复用数据存储的详细过程
# 所示
# 第一个
# 应用程序
# 默认值
# 象中
# 类中
# 得到了
# 第二个
# 可以看到
# 布尔
# 要比
# 就可以
# 都是
# 就会
# 是在
# 会有
# 放在
# 多个
# 基础上
相关文章:
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
高端建站三要素:定制模板、企业官网与响应式设计优化
官网建站费用明细查询_企业建站套餐价格及收费标准指南
建站之星安装步骤有哪些常见问题?
如何通过.red域名打造高辨识度品牌网站?
如何快速搭建虚拟主机网站?新手必看指南
如何通过VPS搭建网站快速盈利?
SQL查询语句优化的实用方法总结
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
制作网站公司那家好,网络公司是做什么的?
如何快速上传自定义模板至建站之星?
如何选择美橙互联多站合一建站方案?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
如何在云服务器上快速搭建个人网站?
如何续费美橙建站之星域名及服务?
平台云上自主建站:模板化设计与智能工具打造高效网站
建站之星代理如何获取技术支持?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
做企业网站制作流程,企业网站制作基本流程有哪些?
模具网站制作流程,如何找模具客户?
建站168自助建站系统:快速模板定制与SEO优化指南
免费网站制作appp,免费制作app哪个平台好?
如何高效生成建站之星成品网站源码?
如何通过虚拟主机空间快速建站?
建站主机是否等同于虚拟主机?
微信小程序 五星评分(包括半颗星评分)实例代码
建站之星2.7模板:企业网站建设与h5定制设计专题
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
宁波自助建站系统如何快速打造专业企业网站?
家庭建站与云服务器建站,如何选择更优?
如何挑选高效建站主机与优质域名?
,网站推广常用方法?
如何在IIS中新建站点并解决端口绑定冲突?
微课制作网站有哪些,微课网怎么进?
制作旅游网站html,怎样注册旅游网站?
python的本地网站制作,如何创建本地站点?
,制作一个手机app网站要多少钱?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何通过WDCP绑定主域名及创建子域名站点?
建站之星展会模板:智能建站与自助搭建高效解决方案
如何快速搭建高效简练网站?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
*请认真填写需求信息,我们会在24小时内与您取得联系。