Android SharedPreferences存储数据与读取

简介: SharedPreferences为Android五种数据存储的方式之一,其他四种数据存储分别为:

1. 介绍

SharedPreferences为Android五种数据存储的方式之一,其他四种数据存储分别为:

  • 文件存储方式
  • SQLite数据库存储
  • ContentProvider方式
  • 网络存储

2. SharedPreferences存储特点

2.1 存储的所有信息都以键值对“key=value”的形式保存;

2.2 SharedPreferences接口只能保存一些基本的数据类型,如字符串,整型,布尔型等。

3. 具体实现

3.1 存储数据

public class MainActivity extends Activity {  
    private static final String fileName = "sharedfile";//定义保存的文件的名称  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
          
        SharedPreferences share = super.getSharedPreferences(fileName, MODE_PRIVATE);//实例化  
        SharedPreferences.Editor editor = share.edit(); //使处于可编辑状态  
        editor.putString("name", "hulu");  
        editor.putString("sex", "man");  
        editor.putInt("age", 22);   //设置保存的数据  
        editor.commit();    //提交数据保存  
    }  
  
}

3.2 取出数据

public class MainActivity extends Activity {  
    private static final String fileName = "sharedfile";// 定义保存的文件的名称  
    private TextView name = null;  
    private TextView sex = null;  
    private TextView age = null;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
  
        name = (TextView) findViewById(R.id.name);  
        sex = (TextView) findViewById(R.id.sex);  
        age = (TextView) findViewById(R.id.age);  
  
        SharedPreferences share = super.getSharedPreferences(fileName,  
                MODE_PRIVATE);  
        name.setText("名字:" + share.getString("name", "没有名字"));// 如果没有值,则显示“没有名字”  
        sex.setText("性别:" + share.getString("sex", "性别不详"));// 如果没有值,则显示“性别不详”  
        age.setText("年龄:" + share.getInt("age", 0));// 如果没有值,则显示默认值0  
    }  
}  

3.3 代码分析

SharedPreferences share = super.getSharedPreferences(name, mode);

3.3.1 name:表示保存到文件的名称;

3.3.2 mode:指定文件的读写方式,其值有三种:

  • MODE_PRIVATE:表示创建的文件只能被一个应用程序调用,或者被具有相同id的应用程序访问;
  • MODE_WORLD_READABLE:允许其他应用程序读取文件(可读);
  • MODE_WORLD_WRITEABLE:允许其他应用程序修改文件(可写);
希望可以帮助大家, 如有问题可加QQ群: 591625129 交流

如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议

如需转载请联系我,经过授权方可转载,谢谢

目录
相关文章
|
2月前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
202 4
|
5月前
|
开发工具 Android开发 开发者
Android平台如何不推RTMP|不发布RTSP流|不实时录像|不回传GB28181数据时实时快照?
本文介绍了一种在Android平台上实现实时截图快照的方法,尤其适用于无需依赖系统接口的情况,如在RTMP推送、RTSP服务或GB28181设备接入等场景下进行截图。通过底层模块(libSmartPublisher.so)实现了截图功能,封装了`SnapShotImpl.java`类来管理截图流程。此外,提供了关键代码片段展示初始化SDK实例、执行截图、以及在Activity销毁时释放资源的过程。此方案还考虑到了快照数据的灵活处理需求,符合GB/T28181-2022的技术规范。对于寻求更灵活快照机制的开发者来说,这是一个值得参考的设计思路。
|
7月前
|
XML 存储 JSON
51. 【Android教程】JSON 数据解析
51. 【Android教程】JSON 数据解析
171 2
|
7月前
|
存储 API 文件存储
47. 【Android教程】SharedPreferences 存储
47. 【Android教程】SharedPreferences 存储
79 2
|
8月前
|
数据库 Android开发
Android 通过升级SettingsProvider数据强制覆盖用户的设置项
Android 通过升级SettingsProvider数据强制覆盖用户的设置项 【5月更文挑战第7天】
214 5
|
3月前
|
存储 大数据 数据库
Android经典面试题之Intent传递数据大小为什么限制是1M?
在 Android 中,使用 Intent 传递数据时存在约 1MB 的大小限制,这是由于 Binder 机制的事务缓冲区限制、Intent 的设计初衷以及内存消耗和性能问题所致。推荐使用文件存储、SharedPreferences、数据库存储或 ContentProvider 等方式传递大数据。
108 0
|
5月前
|
存储 安全 API
Android经典实战之存储方案对比:SharedPreferences vs MMKV vs DataStore
本文介绍了 Android 开发中常用的键值对存储方案,包括 SharedPreferences、MMKV 和 DataStore,并对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例,帮助开发者根据项目需求选择最适合的存储方案,提升应用性能和用户体验。
157 1
|
5月前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
118 1
|
5月前
|
缓存 API Android开发
Android经典实战之Kotlin Flow中的3个数据相关的操作符:debounce、buffer和conflate
本文介绍了Kotlin中`Flow`的`debounce`、`buffer`及`conflate`三个操作符。`debounce`过滤快速连续数据,仅保留指定时间内的最后一个;`buffer`引入缓存减轻背压;`conflate`仅保留最新数据。通过示例展示了如何在搜索输入和数据流处理中应用这些操作符以提高程序效率和用户体验。
59 6
|
5月前
|
编解码 网络协议 前端开发
如何实现Android平台GB28181设备接入模块按需打开摄像头并回传数据
后台采集摄像头,如果想再进一步扩展,可以把android平台gb28181的camera2 demo,都移植过来,实现功能更强大的国标设备侧,这里主要是展示,收到国标平台侧的回传请求后,才打开摄像头,才开始编码打包,最大限度的减少资源的占用