You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MiCode-Notes/output/MiCodeNotes_Analysis.txt

107 lines
4.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 小米便签项目设计文档
## 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数据访问**
- 使用ContentProviderNotesProvider提供数据访问接口
- 支持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设计规范
- 提供美观、直观的用户界面