🏆作者简介:|康有为| ,大四在读,目前在小米做安卓开发,一起学习安卓,加油
🏆本文收录于 安卓学习大全持续更新中,欢迎关注
🏆安卓学习资料推荐:
视频:b站搜动脑学院 视频链接 (他们的视频后面一部分没再更新,看看前面也挺好的)
书籍:《第一行代码》(第3版) by 郭霖 (z-lib.org)
思维导图: https://www.processon.com/view/link/62427cb2e0b34d0730e20e00(来自动脑学院)
目录
一、共享参数SharedPreferences
SharedPreferences是Android的一个轻量级存储工具,采用的存储结构是Key-Value的键值对方式。
重量级存储工具就是指的我们常用的数据库
服务器开发中 常用properties来存储一些键值对,在安卓中就是用SharedPreferences
共享参数的使用场景
共享参数主要适用于如下场合:
- 简单且孤立的数据,若是复杂且相互间有关的数据,则要保存在数据库中。
相互关联的数据:指的就是数据A中包含了数据B这种
- 文本形式的数据,若是二进制数据,则要保存在文件中。
- 需要持久化存储的数据,在APP退出后再次启动时,之前保存的数据仍然有效。
实际开发,共享参数经常存储的数据有APP的个性化配置信息、用户使用APP的行为信息、临时需要保存的片段信息等。
比如:自动登录,记住密码,小说app(返回后再次进入还是 原来看的页数),按钮的状态。
特点
SharedPreferences 是 Android 中用于存储简单键值对数据的一种轻量级持久化存储方式。它的主要特点包括:
- 简单易用:SharedPreferences 提供了简单易用的 API,允许应用程序以键值对的形式存储和检索数据。
- 轻量级:SharedPreferences 存储的数据通常很小,并且适合用于存储简单的配置信息、用户偏好设置等。
- 基于文件存储:SharedPreferences 内部以 XML 文件的形式存储数据。每个应用程序都有自己的 SharedPreferences 文件用于存储应用程序私有的数据。
- 应用级别数据:SharedPreferences 存储的数据是应用程序级别的,即每个应用程序都有自己独立的 SharedPreferences 实例用于存储数据,其他应用程序无法直接访问。
- 轻量级加密:SharedPreferences 的数据存储在文件中,默认情况下是以明文形式存储的。但是,可以通过使用 MODE_PRIVATE 加密模式来提高数据的安全性,使得其他应用程序无法轻易读取和修改数据。
- 实时性:SharedPreferences 中的数据是实时更新的,一旦数据发生变化,其他组件可以立即获取到最新的数据。
尽管 SharedPreferences 具有上述优点,但也有一些限制,例如不适合存储大量复杂数据、不支持事务操作等。因此,对于需要存储大量数据或需要复杂查询和操作的情况,可能需要选择其他数据存储方式,如 SQLite 数据库或使用 Room 持久化库。
共享参数的用法
如果想看更多的用法示例:
推荐
获取 SharedPreferences 对象:
在 Activity 或 Fragment 中,可以通过 getPreferences() 方法获取 SharedPreferences 对象。如果需要在多个组件之间共享数据,可以使用 getSharedPreferences() 方法。
// 获取默认的 SharedPreferences 对象(仅在当前 Activity 或 Fragment 内有效)
SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
// 获取自定义名称的 SharedPreferences 对象(可在多个组件之间共享)
SharedPreferences preferences = getSharedPreferences("custom_prefs", Context.MODE_PRIVATE);
编辑 SharedPreferences:
要修改 SharedPreferences 中的数据,需要获取 SharedPreferences.Editor 对象,并使用其方法进行修改。修改完成后,必须调用 commit() 或 apply() 方法来提交更改。
SharedPreferences.Editor editor = preferences.edit();
editor.putString("key", "value");
editor.putInt("intKey", 42);
editor.apply(); // 或者使用 editor.commit();
读取 SharedPreferences 中的数据:
使用 SharedPreferences 对象的方法来获取存储的数据。
第一个参数是键名,第二个参数是默认值,如果找不到对应的键时将返回默认值。
String value = preferences.getString("key", "default_value");
int intValue = preferences.getInt("intKey", 0);
二、数据库SQLite
在Android中,SQLite是默认的本地数据库引擎,它提供了一种轻量级、嵌入式的数据库解决方案。在Android应用程序中,你可以使用SQLite数据库来存储和检索数据。
推荐 学习博客
【Android入门到项目实战--4.5】—— SQLite数据库存储实现增删改查
Android 数据库(SQLite)【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练-绿豆通讯录)】
SQLite基本语法
因为 这里学习过MySQL,所以上手SQLite会比较容易。
SQLite 和 MySQL 都属于关系型数据库管理系统(RDBMS),它们使用 SQL语言进行数据库操作,因此在很大程度上,它们的基本 SQL 语法是相似的。许多基本的 SQL 查询、插入、更新、删除等语句在这两种数据库系统中都是通用的。
以下是一些在 SQLite 和 MySQL 中通用的 SQL 语句:
-- 创建表格
CREATE TABLE employees (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER,
salary REAL
);
-- 插入数据
INSERT INTO employees (name, age, salary)
VALUES ('John Doe', 30, 50000.00);
-- 查询数据
SELECT name, age
FROM employees
WHERE age > 25;
-- 更新数据
UPDATE employees
SET salary = 55000.00
WHERE name = 'John Doe';
-- 删除数据
DELETE FROM employees
WHERE age < 25;
-- 查询所有数据
SELECT * FROM employees;
-- 查询去重数据
SELECT DISTINCT name, age
FROM employees;
-- 排序数据
SELECT * FROM employees
ORDER BY salary DESC;
-- 连接表格
SELECT employees.name, departments.department_name
FROM employees
JOIN departments ON employees.department_id = departments.department_id;
虽然基本语法很相似,但是需要注意一些差异。一些高级功能、数据类型、约束等方面可能会有一些不同。例如,MySQL 支持 AUTO_INCREMENT 属性来定义自增主键,而 SQLite 使用 INTEGER PRIMARY KEY AUTOINCREMENT 来实现相似的功能。此外,一些数据库管理系统特定的函数、语法和性能优化等也可能有所不同。
数据库帮助器SQLiteOpenHelper
数据库帮助器(SQLiteOpenHelper)是 Android 中用于管理 SQLite 数据库的帮助类。它提供了创建、升级数