Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Android从零单排系列四十】《Android数据存储方式-SharedPreferences、》

【Android从零单排系列四十】《Android数据存储方式-SharedPreferences、》

作者头像
再见孙悟空_
发布于 2023-07-17 12:35:36
发布于 2023-07-17 12:35:36
41200
代码可运行
举报
运行总次数:0
代码可运行

前言

小伙伴们,在前面的一系列文章中我们分别介绍了Android视图控件、Android布局、Android四大组件,本文开始我们介绍一下Android中的数据存储

一 SharedPreferences基本介绍

SharedPreferences是Android平台上一种轻量级的数据存储方式,用于保存和读取应用程序的配置信息或其他简单的持久化数据。它的主要特点包括:

  1. 键值对存储:SharedPreferences以键值对的形式存储数据,每个键和对应的值都必须是基本数据类型或其封装类。
  2. 应用内部存储:SharedPreferences使用XML文件来存储数据,数据保存在应用程序的私有目录中,只能被当前应用程序访问。
  3. 持久化存储:SharedPreferences中的数据会在应用关闭后仍然保留,并且可以在下次启动应用时重新读取使用。
  4. 配置信息存储:SharedPreferences常用于存储应用程序的配置信息,如用户偏好设置、登录状态等。

二 SharedPreferences使用方法

使用SharedPreferences进行数据存储和读取的基本步骤如下:

获取SharedPreferences对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 使用getSharedPreferences方法获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("文件名", MODE_PRIVATE);

其中,"文件名"是用于标识保存数据的XML文件名,在同一个文件名下存储的数据将共享访问。

存储数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 获取SharedPreferences.Editor对象
SharedPreferences.Editor editor = sharedPreferences.edit();

// 使用put方法存储数据,键值对形式
editor.putString("键", "值");  // 存储字符串数据
editor.putInt("键",);       // 存储整型数据
editor.putBoolean("键",);   // 存储布尔型数据

// 提交保存
editor.apply();

可以根据需要使用不同的put方法来存储不同类型的数据。

读取数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 使用get方法读取数据,默认值为默认值参数指定的值
String stringValue = sharedPreferences.getString("键", "默认值");
int intValue = sharedPreferences.getInt("键", 默认值);
boolean boolValue = sharedPreferences.getBoolean("键", 默认值);

通过getString、getInt、getBoolean等方法可以根据键获取存储的对应类型的值,并指定默认值,以防获取不到数据时返回设定的默认值。

  • 需要在合适的时机获取SharedPreferences对象,通常在活动(Activity)的onCreate方法中进行。
  • 存储数据时,使用apply()方法提交保存,确保异步保存数据,并且不会阻塞主线程。也可以使用commit()方法提交,但它会阻塞主线程。
  • 读取数据时,需要根据实际需要选择适当的默认值。
  • 使用相同的文件名可以实现数据的共享和访问。
  • 在应用程序范围内,可以多处使用SharedPreferences来进行数据存储和读取

三 SharedPreferences常见属性及方法

常见属性:

  1. MODE_PRIVATE: 表示创建的SharedPreferences文件只能被当前应用程序访问,其他应用无法读取。

常见方法:

  1. getSharedPreferences(String name, int mode): 获取SharedPreferences对象,参数包括文件名和存储模式。
  2. edit(): 返回一个SharedPreferences.Editor对象,用于修改SharedPreferences中的数据。
  3. putString(String key, String value): 存储字符串类型的数据。
  4. putInt(String key, int value): 存储整型数据。
  5. putBoolean(String key, boolean value): 存储布尔型数据。
  6. apply(): 提交保存修改的数据,异步操作,不会阻塞主线程。
  7. commit(): 提交保存修改的数据,同步操作,会阻塞主线程。
  8. getString(String key, String defaultValue): 获取存储的字符串类型数据,第二个参数为默认值。
  9. getInt(String key, int defaultValue): 获取存储的整型数据,第二个参数为默认值。
  10. getBoolean(String key, boolean defaultValue): 获取存储的布尔型数据,第二个参数为默认值。
  11. contains(String key): 判断指定键是否存在于SharedPreferences中。
  12. remove(String key): 移除指定键及其对应的值。
  13. clear(): 清除所有保存的数据。

四 SharedPreferences简单案例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private static final String SHARED_PREFS_NAME = "MyPrefs";
    private static final String KEY_NAME = "name";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 存储数据到SharedPreferences
        saveData("John Doe");

        // 读取数据并打印
        String savedName = loadData();
        System.out.println("Saved name: " + savedName);
    }

    private void saveData(String name) {
        SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS_NAME, MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(KEY_NAME, name);
        editor.apply();
    }

    private String loadData() {
        SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS_NAME, MODE_PRIVATE);
        return sharedPreferences.getString(KEY_NAME, "");
    }
}

以上代码中,在onCreate()方法中,首先调用saveData()方法存储名字数据到SharedPreferences。然后调用loadData()方法读取保存的名字数据,并通过System.out.println()打印出来。

在这个例子中,我们将SharedPreference的文件名指定为"MyPrefs",并且定义了名字的键名"key_name"。可以根据需求修改这些值。

请注意,在实际应用中,AndroidManifest.xml文件中要注册MainActivity以便正确运行。

通过这个简单的案例,你可以学习到如何使用SharedPreferences存储和读取数据。

五 总结

通过SharedPreferences,我们可以方便地进行简单数据的存储和读取,适用于保存应用程序的配置信息、用户偏好设置等场景。但需要注意,它并不适合存储大量复杂的数据,对于复杂的数据存储需求,建议使用SQLite数据库或其他更适合的数据存储方式。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android数据存储之SharePreferences简记
之前在项目中有个资料编辑功能,寻找了好久,最终决定使用SharePreferences,可惜当初学的太差,现在只好重新补救,将相关内容整理于此。
WindCoder
2018/09/20
2.2K0
Android数据存储之SharePreferences简记
深入剖析Android中最简单的数据存储方式:SharedPreferences
今天来和大家分享一篇有关Android中数据存储的文章,它可以说是Android对数据的所有存储方式中最简单的一种存储了,它就是SharedPreferences.
灰小猿
2021/09/23
2.9K0
Android数据存储方式之SharedPreferences
不同于文件的存储方式,SharedPreferences提供了一种K-V键值对的数据存储方式。
泰坦HW
2021/09/10
7.9K0
Android数据存储之SharedPreferences
我们平常在QQ或微信上登录账号时会发现,如果之前登录过账号,则在用户名的输入框中会存在之前输入过的账号信息,这些用户名信息是如何自动显示在界面输入框中的呢?
用户8639654
2021/07/15
1.2K0
【Android】数据存储(一) SharedPreferences详解
SharedPreferences介绍 在Android开发中,经常需要将少量简单类型数据保存在本地,如:用户设置。这些需要保存的数据可能一两个字符串,像这样的数据一般选择使用SharedPreferences来保存。 SharedPreferences:一个轻量级的存储类,特别适合用于保存软件配置参数。(是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下) SharedPreferences可以保存的数据类型有:int、boolean
Gavin-ZYX
2018/05/18
2.8K0
Android中SharedPreferences使用小记
        Android中使用SharedPreferences来进行简单数据的持久化处理,从名字就可以了解,其设计目的是为了保存应用程序的一些偏好设置,如音量,主题等信息。其与iOS开发中的NSUserDefault十分类似,并且,他们的实质都是采用XML格式的文件来存储数据。
珲少
2018/08/15
9530
Android中SharedPreferences使用小记
Android开发笔记(二十九)使用SharedPreferences存取数据
共享参数(SharedPreferences)是Android上的一个轻量级存储工具,存储结构是类似map的key—value键值对形式。它主要用于保存app的基础设置,比如说app当前已安装的版本号,这样下次app版本更新时就能根据之前的版本号作相应处理。因为app每次更新都可能创建新的数据表,从版本7升级到版本10,对比版本9升级到版本10,前一种升级可能要创建更多的表,所以此时很有必要从SharedPreferences中读取之前的版本号,这样才能根据不同版本号做不同的分支处理。 另外,SharedPreferences还可用于保存Activity状态,当Activity暂停时,将此activity的状态保存到SharedPereferences中(主要是保存该activity必须的一些参数信息);当Activity重载时,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。
aqi00
2019/01/18
8430
Android基础总结(5)——数据存储,持久化技术
瞬时数据:指那些存储在内存当中,有可能会因为程序广播或其他原因导致内存被回收而丢失的数据。 数据持久化:指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不丢失。   保存在内存中的数据是瞬时数据,保存在手机设备中的数据是处于持久状态的,持久化技术则是提供了一种机制可以让数据在瞬时状态和持久状态之间进行切换。 1、持久化技术有哪些   Android系统中主要提供了三种方式用于简单地实现数据持久化功能: 文件存储:是Android中最基本的一种数据存储方式。不对存储内
mukekeheart
2018/02/27
1.3K0
Android数据储存之SharedPreferences-记住密码案例
---- 简介 SharedPreferences是一种轻型的数据存储方式,通过键值对的形式保存数据,存储数据是以xml文件形式存储,文件存放在/data/data//shared_prefs目录下,一般用来存储一些简单的配置信息。 SharedPreferences操作模式 MODE_PRIVATE:默认的操作模式,同名文件内容会被覆盖。 MODE_APPEND:则表示如果该文件已存在就往文件里面追加内容,不存在就创建新文件。 初始化SharedPreferences Activity类中的getP
sr
2019/05/23
1K0
学习|Android中SharedPreferences轻量数据存储
有时候我们做的App中不需要本地保存数据,但是有些小的配置参数需要记录,如果中Sqlite就感觉有点太重了,也比较麻烦,所以今天我们来看看Android系统中轻量数据存储SharedPreferences
Vaccae
2020/01/02
7130
10.Android-SharedPreferences使用
SharedPreferences,它是一个轻量级的配置文件类,用于保存软件配置参数. 采用xml文件形式存储在/data/data/包名/shared_prefs/下
诺谦
2020/02/12
9400
android之存储篇_SharedPreferences存储方式
大家好,又见面了,我是全栈君。 SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:
全栈程序员站长
2022/07/20
1.6K0
android之存储篇_SharedPreferences存储方式
Android之SharedPreferences使用
Sharedpreferences是Android平台上一个轻量级的存储类,用来保存应用程序的各种配置信息,其本质是一个以“键-值”对的方式保存数据的xml文件,其文件保存在/data/data//shared_prefs目录下。在全局变量上看,其优点是不会产生Application 、 静态变量的OOM(out of memory)和空指针问题,其缺点是效率没有上面的两种方法高。
李小白是一只喵
2021/12/06
1.1K0
Android使用SharedPreferences保存账号密码
有很多的应用都会有保存密码和账号的功能,比如QQ。接下来就讲讲使用SharedPreferences来保存密码和账号,也许有些人会考虑的数据库,但是我个人认为对于保存简单的数据,使用的数据库就大材小用了,SharedPreferences比较轻量级
夜雨飘零
2020/05/06
2.4K0
Android应用开发SharedPreferences存储数据的使用方法
SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据. 1.存储数据 //实例化SharedPreferences对象(第一步) SharedPreferences mySharedPreferences= getSharedPreferences("test", Activity.MODE_PRIVATE); //实例化SharedP
水击三千
2018/02/27
9430
Android数据存储之SharedPreferences
我们平常在QQ或微信上登录账号时会发现,如果之前登录过账号,则在用户名的输入框中会存在之前输入过的账号信息,这些用户名信息是如何自动显示在界面输入框中的呢?
用户8639654
2021/07/16
1.2K0
android之SharedPreferences简介[通俗易懂]
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存.
全栈程序员站长
2022/07/20
4.5K0
【鼠】安卓学习杂记(十一)——Android数据存储之SharedPreferences
SharedPreferences是用键值对的方式来存储数据的;也就是说,当保存一条数据的时候需要给这条数据提供一个键,然后通过这个键取得数据的值;而且,SharedPreferences支持多种数据类型的存储。
訾博ZiBo
2025/01/06
780
【鼠】安卓学习杂记(十一)——Android数据存储之SharedPreferences
SharedPreferences采用什么方式存储数据_sharedpreferences使用方法
SharedPreferences(简称sp)Android平台上一个轻量级的存储辅助类,它提供了key-value键值对的接口,用来保存应用的一些常用配置,在应用中通常做一些简单数据的持久化缓存。本文将详细的分析SharedPreferences的实现方式、存储机制、如何正确使用它以及sp的性能问题等方面。
全栈程序员站长
2022/09/22
1.7K0
数据存储之SharedPreferences
在Android系统中提供了多张存储技术,这些存储技术可以讲数据保存在各种存储介质上。例如SharedPreferences可以将数据保存在应用软件的私有存储区,这些存储区中的数据只能被写入这些数据的软件读取。除此之外,Android系统还支持文件存储、SQLite数据库、OBB文件、云存储等
小小工匠
2021/08/16
9620
推荐阅读
相关推荐
Android数据存储之SharePreferences简记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验