SharedPreferences之Android数据保存

简介: 本文参考Google官方文档http://developer.android.com/training/basics/data-storage/shared-preferences.html 在Android中最简单的数据保存方式就数——SharedPreferences。

本文参考Google官方文档http://developer.android.com/training/basics/data-storage/shared-preferences.html

在Android中最简单的数据保存方式就数——SharedPreferences。

如果你想要保存一些较小的键值对集合并且是简单的数据类型的话,使用SharedPreferences无疑是最好的选择,一个SharedPreferences对象指向的文件是一个包含键值对的XML文件,并且其本身提供了一些简单的方法供我们读写。其中SharedPreferences可以设置为私有和共享的。

第一步:获取SharedPreferences对象

1、通过getSharedPreferences(String name, int mode)方法返回一个SharedPreferences对象。如果name存在,则返回指向这个文件的SharedPreferences对象。如果name不存在,则创建新的文件,返回SharedPreferences对象。MODE是指文件的权限,常用的权限类型有三个:MODE_PRIVATE(私有--只能本程序访问)、MODE_WORLD_READABLE(公开读取权限--所有程序都可以读取)、MODE_WORLD_WRITEABLE(全局写权限--所有程序都能读写)。

2、通过getPreferences(int mode)方法返回SharedPreferences对象。这个SharedPreferences对象仅仅是当前Activity拥有,默认的name为当前Activity的类名。

第二步:获取SharedPreferences.Editor接口,实现对SharedPreferences的编辑

官方推荐:SharedPreferences文件命名推荐使用包名+名称,比如:"com.example.myapp.PREFERENCE_FILE_KEY"

SharedPreferences sp = this.getSharedPreferences("mySharedPreferences", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.putString("username", username);
        editor.putString("password", password);
        editor.commit();

第三步:读取SharedPreferences文件数据

读取数据和写数据是相对应的,通过方法getXxxx()将key-value中的数据取出。

SharedPreferences sp = MainActivity.this.getSharedPreferences("mySharedPreferences", Context.MODE_PRIVATE);
        String username = sp.getString("username", "moocher");
如果在SharedPreferences文件中没有找到USERNAME,默认会返回moocher值。

MainActivity.xml是通过getPreferences(int mode)方法创建的SharedPreferences文件。

mySharedPreferences.xml是通过getSharedPreferences(String name, int mode)方法创建的。

目录
相关文章
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
1275 4
|
5月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
409 11
|
7月前
|
存储 XML Java
Android 文件数据储存之内部储存 + 外部储存
简介:本文详细介绍了Android内部存储与外部存储的使用方法及核心原理。内部存储位于手机内存中,默认私有,适合存储SharedPreferences、SQLite数据库等重要数据,应用卸载后数据会被清除。外部存储包括公共文件和私有文件,支持SD卡或内部不可移除存储,需申请权限访问。文章通过代码示例展示了如何保存、读取、追加、删除文件以及将图片保存到系统相册的操作,帮助开发者理解存储机制并实现相关功能。
1997 2
|
10月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
686 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
开发工具 Android开发 开发者
Android平台如何不推RTMP|不发布RTSP流|不实时录像|不回传GB28181数据时实时快照?
本文介绍了一种在Android平台上实现实时截图快照的方法,尤其适用于无需依赖系统接口的情况,如在RTMP推送、RTSP服务或GB28181设备接入等场景下进行截图。通过底层模块(libSmartPublisher.so)实现了截图功能,封装了`SnapShotImpl.java`类来管理截图流程。此外,提供了关键代码片段展示初始化SDK实例、执行截图、以及在Activity销毁时释放资源的过程。此方案还考虑到了快照数据的灵活处理需求,符合GB/T28181-2022的技术规范。对于寻求更灵活快照机制的开发者来说,这是一个值得参考的设计思路。
325 1
|
XML 存储 JSON
51. 【Android教程】JSON 数据解析
51. 【Android教程】JSON 数据解析
386 2
|
存储 API 文件存储
47. 【Android教程】SharedPreferences 存储
47. 【Android教程】SharedPreferences 存储
244 2
|
数据库 Android开发
Android 通过升级SettingsProvider数据强制覆盖用户的设置项
Android 通过升级SettingsProvider数据强制覆盖用户的设置项 【5月更文挑战第7天】
509 5
|
存储 安全 API
Android经典实战之存储方案对比:SharedPreferences vs MMKV vs DataStore
本文介绍了 Android 开发中常用的键值对存储方案,包括 SharedPreferences、MMKV 和 DataStore,并对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例,帮助开发者根据项目需求选择最适合的存储方案,提升应用性能和用户体验。
951 1
|
存储 大数据 数据库
Android经典面试题之Intent传递数据大小为什么限制是1M?
在 Android 中,使用 Intent 传递数据时存在约 1MB 的大小限制,这是由于 Binder 机制的事务缓冲区限制、Intent 的设计初衷以及内存消耗和性能问题所致。推荐使用文件存储、SharedPreferences、数据库存储或 ContentProvider 等方式传递大数据。
657 0