安卓开发笔记:数据保存技术详解
45 浏览量
更新于2024-07-15
收藏 193KB PDF 举报
"安卓第二天笔记--数据保存"
在安卓应用开发中,数据保存是不可或缺的一部分,它确保用户的数据得以持久化,即使应用关闭或设备重启,数据也能被恢复。本笔记主要涉及私有文件存储方式,这通常是应用用来保存敏感信息如用户登录凭证的方式。
首先,我们看到一个简单的登录界面布局,包含了一个ImageView、两个EditText(用于输入QQ号码和密码)、一个CheckBox(用于记住密码)以及一个Button(登录按钮)。这个界面是通过XML布局文件定义的,其中EditText的`inputType`属性分别设为`number`和`textPassword`,以限制用户只能输入数字和文本,并且密码是隐藏的。
当用户在EditText中输入QQ号码和密码后,我们可能希望在他们选择“记住密码”选项时保存这些信息。Android提供了多种数据保存的方法:
1. SharedPreferences:这是一个轻量级的存储选项,适合保存键值对,如登录凭据。我们可以使用`SharedPreferences.Editor`来添加或修改键值对,然后调用`commit()`或`apply()`来保存更改。例如,可以将QQ号码和密码保存为字符串,而记住密码的状态可以保存为布尔值。
```java
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("qqNumber", et_qqNumber.getText().toString());
editor.putString("qqPwd", et_qqPwd.getText().toString());
editor.putBoolean("remember", cb_remember.isChecked());
editor.apply();
```
2. 内部存储:应用可以创建自己的私有文件夹在内部存储中,只有该应用有权访问。如果数据量较大,如用户上传的图片或音频文件,可以选择这种方式。使用`openFileOutput()`方法可以创建和写入文件。
```java
FileOutputStream fos = openFileOutput("qq_info.txt", Context.MODE_PRIVATE);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fos));
writer.write("qqNumber=" + et_qqNumber.getText().toString());
writer.newLine();
writer.write("qqPwd=" + et_qqPwd.getText().toString());
writer.newLine();
writer.write("remember=" + cb_remember.isChecked());
writer.close();
```
3. SQLite数据库:对于更复杂的数据结构,如用户联系人列表,可以使用SQLite数据库。创建一个数据库表,然后插入、查询或更新数据。不过,这个例子中由于数据比较简单,使用SharedPreferences或内部存储已经足够。
4. ContentProvider:虽然在这个简单的场景下不常用,但ContentProvider可以提供一种标准的方式来与其他应用共享数据,或者在一个应用的不同组件之间共享数据。
在保存数据后,下次启动应用时,我们需要检查SharedPreferences或文件系统中是否存在之前保存的登录信息,如果存在并且用户选择了“记住密码”,则可以直接填充到登录界面中,提高用户体验。
Android提供了多种数据保存机制,开发者可以根据具体需求选择合适的方法。在处理用户敏感信息时,务必确保数据的安全性,遵循最佳实践,如加密存储密码,而不是直接保存明文。
2010-03-16 上传
282 浏览量
2021-02-26 上传
2021-02-26 上传
2021-02-26 上传
2021-02-26 上传
2018-04-19 上传
2021-01-05 上传
2014-07-21 上传
weixin_38601499
- 粉丝: 2
- 资源: 938
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率