Android复习之数据存储-SharedPreferences

SharedPreferences是Android中一种轻量级的数据存储方式,常用于保存配置参数和临时数据。它以XML文件形式存储,提供了便捷的存取操作。获取SharedPreferences对象有三种方式:通过Context、Activity或PreferenceManager。数据存储涉及putXXX()和commit()方法,读取数据则用getXXX()方法。它支持多种数据类型,如String、int等,并且存储的数据对同一应用的所有Activity都可访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SharedPreferences

是什么

SharedPreferences是数据存储方案中持久化技术之一

怎么样

它是一个轻量级的存储类,特别适合用于保存软件配置参数或者保存临时数据。使用 SharedPreferences保存数据,其背后是用xml文件(键值对)存放数据,,它存放在文件系统中的/data/data/<package name>/shared_prefs目录下。

怎么用

如何获取SharedPreference对象

一般有三种方法:

  • Context类中的getSharedPreferences()方法
  • Activity类中的getPreferences()方法
  • PreferenceManager类中的getDefaultSharedPreferences()方法

方法一:Context类中的getSharedPreferences()方法

这里写图片描述

使用

 //第一种方式通过context类获取
        SharedPreferences preferences = getApplicationContext().getSharedPreferences("sky", 0);

这种方法需要传入两个参数name和mode:

由上图可知
name:获取的这个首选项文件的名称。当这个名称的首选项文件不存在时,它将会被创建。
mode:操作首选项的模式。用0或者MODE_PRIVATEMODE_WORLD_READABLEMODE_WORLD_WRITEABLE,MODE_MULTI_PROCESS来控制权限。MODE_PRIVATE和直接传入0效果一样,表示只有当前的应用程序才可以对该SharedPreferences文件进行读写;MODE_MULTI_PROCESS则一般用于多个进程对同一个SharedPreferences文件进行读写的情况,MODE_WORLD_READABLE表示外部可读,MODE_WORLD_WRITEABLE表示外部可写。

方式二:Activity类中的getPreferences()方法
Activity类中的getPreferences()方法

使用

preferences = this.getPreferences(0);

这种方式只需要传入一个操作模式,而文件名自动为当前Activity的类名,参数解释和方法一一样,不重复记录。

方式三:PreferenceManager类中的getDefaultSharedPreferences()方法

PreferenceManager类中的getDefaultSharedPreferences()方法
该方法为静态方法,只有一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。

使用

PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

注意

通过Context获得的SharedPreferences对象能被同一个应用中的所有Activity访问;

通过Activity获得的SharedPreferences对象,若其它Activity想获得该SharedPreferences文件,则只能通过Context类中的getSharedPreferences()方法获取SharedPreferences对象,当然文件名必须是该SharedPreferences文件名

如何向SharedPreference中存入数据

保存数据步骤:

  1. 调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor(内部类)对象;
  2. 通过Editor的putXXX()方法向Editor对象中添加数据;
  3. 调用Editor的commit()方法提交数据,完成数据存储操作。

基础使用,以第一种为例

SharedPreferences preferences = getApplicationContext().getSharedPreferences("sky", MODE_PRIVATE);
 SharedPreferences.Editor edit = preferences.edit();
                edit.putString("Sky","i appreciate the man who are good at android");
                edit.commit();

这样就保存了一个key为Sky的String值

在/data/data/com.cd.storagedemo/shared_prefs 文件夹下查看有一个Sky的xml文件导出到桌面,使用notpad++查看,如图

保存的值

这样说明像SharedPreference中保存值已经操作成功了。

如何向SharedPreference中读取数据

通过SharedPreferences对象的getXXX()可以获取对应的数据,getXXX()方法接收两个参数,第一个参数是键(存数据时使用的键名),第二个参数为默认值,即当找不到对应的键时返回该值。
如图
参数

获取刚刚保存的值

 String sky = preferences.getString("Sky", "null");
 Log.d("MainActivity", "取到的保存的值" + sky);

打印结果

打印输出结果

清空保存的数据

 //获取到编辑器
                SharedPreferences.Editor edit1 =    preferences.edit();
                //清空数据
                edit1.clear();
                //提交
                edit1.commit();

空了

如图刚刚的数据已经被清空了。

补充

1,保存数据,一般在onPause方法中代码如下:

@Override
protected void onPause(){
   super.onPause();
   SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("Sky",0);
   //SharedPreferences sharedPreferences = this.getPreferences(0);
   //SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
   SharedPreferences.Editor editor = sharedPreferences.edit();
   editor.putString("Sky","i appreciate the man who are good at android");

   editor.commit();
}

2,读取数据一般在onResume中,代码如下

@Override
protected void onResume(){
  super.onResume();
  SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("Sky",0);
  String sky= sharedPreferences.getString("Sky","null");


}

3,它提供了多种数据类型的存储,包括:intlongbooleanfloatString以及string 集合

4,存储格式为xml格式

参考博客
http://blog.youkuaiyun.com/wangyongge85/article/details/45305717

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值