前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android从零单排系列四十】《Android数据存储方式-SharedPreferences、》

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

作者头像
再见孙悟空_
发布2023-07-17 20:35:36
2830
发布2023-07-17 20:35:36
举报

前言

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

一 SharedPreferences基本介绍

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

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

二 SharedPreferences使用方法

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

获取SharedPreferences对象:

代码语言:javascript
复制
// 使用getSharedPreferences方法获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("文件名", MODE_PRIVATE);

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

存储数据:

代码语言:javascript
复制
// 获取SharedPreferences.Editor对象
SharedPreferences.Editor editor = sharedPreferences.edit();

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

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

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

读取数据:

代码语言:javascript
复制
// 使用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
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一 SharedPreferences基本介绍
  • 二 SharedPreferences使用方法
  • 三 SharedPreferences常见属性及方法
  • 四 SharedPreferences简单案例
  • 五 总结
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档