Android 基础笔记 04 篇:数据存储篇
短信预约 -IT技能 免费直播动态提醒
存储模式
作者:Look For Answer
Android 提供了四种存储模式:
专属空间存储:以该模式存储的数据只允许特定的应用程序访问。 共享空间存储:以该模式存储的数据,所有应用都可以访问。 首选项存储:常用于保存键值对数据。 本地数据库存储:常用于保存结构体数据。 专属空间存储模式 应用的专属空间存放文件的目录:内部存储目录和外部存储目录。 应用的专属空间存放的文件类型:持久文件和缓存文件. 应用不需要任何权限就可以对专属空间中的文件进行读写,而其他应用不允许访问这些文件。 应用的专属空间存放的文件将在应用移除时一并移除. 专属空间存储实践s1:新建文件
File file = new File(AppContext.getInstance().getFilesDir(), "file_1");
s2:向文件中写入数据
FileOutputStream fos = new FileOutputStream(file, false);
fos.write("123".getBytes());
s3:向文件中读出数据
FileInputStream fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
Toast.makeText(AppContext.getInstance(), br.readLine(), Toast.LENGTH_SHORT).show();
共享空间存储模式
共享空间存储的文件能够被所有 APP 访问.
共享空间存储的文件不会在 APP 卸载时被移除.
Android 提供了访问音频文件和文档文件 API.
操作可参考:https://developer.android.google.cn/training/data-storage/shared。
首选项存储模式
首选项保存模式是使用键值对的方式来存储数据.
首选项保存模式支持多种不同的数据类型存储,如果存储的数据类型是整形,那么读取出来的数据也是整形.
在 SharedPreference 中存储的数据在应用下次启动时也会存在.
首选项存储实践
Android 提供了两种方式获取 SharedPreference 句柄:
Context 类中的 getSharedPreferences() 方法: 如果您需要多个由名称(使用第一个参数指定)标识的共享偏好设置文件,则使用此方法。您可以从应用中的任意 Context 调用此方法。 Activity 中的 getPreference() 方法: 如果您只需要针对某个 Activity 使用一个共享偏好设置文件,则可以在该 Activity 中使用此方法。由于这会检索属于该 Activity 的默认共享偏好设置文件,因此您无需提供名称。s1: 向 SharedPreference 中写入数据
SharedPreferences.Editor edit = getSharedPreferences("file_2", MODE_PRIVATE).edit();
edit.putString("name", "zhr");
edit.putInt("age", 25);
edit.apply();
s2: 从 SharedPreference 中读出数据
SharedPreferences sp = getSharedPreferences("file_2", MODE_PRIVATE);
String name = sp.getString("name","");
int age = sp.getInt("age", 0);
Toast.makeText(AppContext.getInstance(), "name = " + name + " age = " + age, Toast.LENGTH_SHORT).show();
本地数据库存储模式
Android 内置 SQLite 数据库. SQLite 数据库是一款轻量级的关系型数据库,它的运算速度非常快,占用资源非常少.
Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。
实践可参照官网资料:https://developer.android.google.cn/training/data-storage/room。
也可以参照我的另一篇博客:Android 开发笔记 03 篇:数据库框架 Room
作者:Look For Answer
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341