# 小米便签项目设计文档 ## 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设计规范 - 提供美观、直观的用户界面