|
|
# 小米便签项目设计文档
|
|
|
|
|
|
## 1. 项目主要功能及其代码实现关系简表
|
|
|
|
|
|
功能模块 | 实现类 | 主要功能描述
|
|
|
---------|---------|-------------
|
|
|
便签列表 | NotesListActivity | 显示便签列表,支持文件夹查看、新建便签、删除便签等功能
|
|
|
便签编辑 | NoteEditActivity | 支持便签的创建、编辑、设置提醒、背景颜色等功能
|
|
|
数据模型 | Note, WorkingNote | 便签的数据模型,包含便签的基本属性和操作方法
|
|
|
数据存储 | NotesDatabaseHelper, NotesProvider | 管理SQLite数据库,提供数据访问接口
|
|
|
桌面小部件 | NoteWidgetProvider_2x, NoteWidgetProvider_4x | 提供2x2和4x4两种大小的桌面小部件
|
|
|
提醒功能 | AlarmReceiver, AlarmAlertActivity | 提供便签提醒功能
|
|
|
Google同步 | GTaskSyncService | 提供与Google Tasks的同步功能(当前版本已禁用)
|
|
|
数据导出 | BackupUtils | 支持将便签导出为文本文件
|
|
|
|
|
|
## 2. 主要的类图与关系
|
|
|
|
|
|
### 数据模型类图
|
|
|
|
|
|
类图说明:
|
|
|
- Note类:核心数据模型,包含便签的ID、父ID、内容片段、提醒日期、创建日期、修改日期、背景颜色等属性
|
|
|
- NoteData类:包含文本数据ID和通话数据ID,提供设置数据和将数据推送到ContentProvider的方法
|
|
|
- WorkingNote类:工作便签类,在UI层和数据层之间提供便捷的接口,包含便签ID、背景颜色、内容、提醒日期等属性
|
|
|
- Notes类:定义常量,如便签类型、文件夹ID等
|
|
|
- NoteColumns接口:定义便签表的列名
|
|
|
- DataColumns接口:定义数据表的列名
|
|
|
|
|
|
关系:
|
|
|
- Note包含NoteData
|
|
|
- WorkingNote使用Note
|
|
|
- Note使用Notes中的常量
|
|
|
- Notes定义了NoteColumns和DataColumns
|
|
|
|
|
|
### 数据库模式图
|
|
|
|
|
|
数据库表结构:
|
|
|
- NOTE表:存储便签和文件夹信息,包含id(主键)、parent_id(外键)、alerted_date、bg_color_id等字段
|
|
|
- DATA表:存储便签内容数据,包含id(主键)、mime_type、note_id(外键)、content等字段
|
|
|
|
|
|
关系:
|
|
|
- NOTE表和DATA表是一对多关系:一个便签可以有多条数据
|
|
|
- NOTE表和NOTE表是一对多关系:一个文件夹可以包含多个便签
|
|
|
|
|
|
### 创建新便签的时序图
|
|
|
|
|
|
时序描述:
|
|
|
1. 用户点击"新建便签"按钮
|
|
|
2. NotesListActivity调用createNewNote()方法
|
|
|
3. NotesListActivity调用WorkingNote.createEmptyNote()方法
|
|
|
4. WorkingNote调用Note.getNewNoteId()方法
|
|
|
5. Note通过NotesProvider向数据库插入新记录
|
|
|
6. 数据库返回新便签ID
|
|
|
7. NotesProvider返回包含ID的Uri
|
|
|
8. Note返回便签ID给WorkingNote
|
|
|
9. WorkingNote返回实例给NotesListActivity
|
|
|
10. NotesListActivity启动NoteEditActivity编辑新便签
|
|
|
|
|
|
## 3. 项目架构图
|
|
|
|
|
|
### MVC架构模式
|
|
|
|
|
|
MVC架构描述:
|
|
|
- 模型层(Model):Note、WorkingNote、Notes等数据模型类
|
|
|
- 控制器层(Controller):NotesProvider、NotesDatabaseHelper等数据控制类
|
|
|
- 视图层(View):NotesListActivity、NoteEditActivity等UI类和XML布局文件
|
|
|
|
|
|
数据流向:
|
|
|
- 模型层与控制器层双向交互
|
|
|
- 控制器层与视图层双向交互
|
|
|
- 视图层与用户界面双向交互
|
|
|
|
|
|
## 4. 项目总体技术点分析
|
|
|
|
|
|
1. **MVC架构模式**:
|
|
|
- Model层:Note、WorkingNote等数据模型类
|
|
|
- View层:NotesListActivity、NoteEditActivity等UI类
|
|
|
- Controller层:NotesProvider、NotesDatabaseHelper等数据控制类
|
|
|
|
|
|
2. **ContentProvider数据访问**:
|
|
|
- 使用ContentProvider(NotesProvider)提供数据访问接口
|
|
|
- 支持CRUD(增删改查)操作
|
|
|
- 通过URI标识不同的数据资源
|
|
|
|
|
|
3. **SQLite数据库存储**:
|
|
|
- 使用SQLite数据库存储便签数据
|
|
|
- 两个主要表:note表和data表
|
|
|
- 使用触发器(Trigger)维护数据一致性
|
|
|
|
|
|
4. **AppWidget桌面小部件**:
|
|
|
- 提供2x2和4x4两种大小的桌面小部件
|
|
|
- 支持通过小部件快速查看和创建便签
|
|
|
|
|
|
5. **同步功能**:
|
|
|
- 支持与Google Tasks同步(当前版本已禁用)
|
|
|
- 使用REST API进行数据同步
|
|
|
|
|
|
6. **提醒功能**:
|
|
|
- 使用AlarmManager实现便签提醒
|
|
|
- 支持设置提醒时间并在到达时间时触发通知
|
|
|
|
|
|
7. **数据导出功能**:
|
|
|
- 支持将便签导出为文本文件
|
|
|
- 支持通过短信或邮件分享便签内容
|
|
|
|
|
|
8. **Material Design设计**:
|
|
|
- 遵循Material Design设计规范
|
|
|
- 提供美观、直观的用户界面 |