# 小米便签项目设计文档 ## 1. 项目主要功能及其代码实现关系简表 | 功能模块 | 实现类 | 主要功能描述 | |---------|---------|-----------| | 便签列表 | NotesListActivity | 显示便签列表,支持文件夹查看、新建便签、删除便签等功能 | | 便签编辑 | NoteEditActivity | 支持便签的创建、编辑、设置提醒、背景颜色等功能 | | 数据模型 | Note, WorkingNote | 便签的数据模型,包含便签的基本属性和操作方法 | | 数据存储 | NotesDatabaseHelper, NotesProvider | 管理SQLite数据库,提供数据访问接口 | | 桌面小部件 | NoteWidgetProvider_2x, NoteWidgetProvider_4x | 提供2x2和4x4两种大小的桌面小部件 | | 提醒功能 | AlarmReceiver, AlarmAlertActivity | 提供便签提醒功能 | | Google同步 | GTaskSyncService | 提供与Google Tasks的同步功能(当前版本已禁用) | | 数据导出 | BackupUtils | 支持将便签导出为文本文件 | ## 2. 主要的类图与关系 ### 数据模型类图 ```mermaid classDiagram class Note { +long id +long parent_id +String snippet +long alert_date +long created_date +long modified_date +int bg_color_id +int type +int widget_id +int widget_type +boolean has_attachment +getNewNoteId() +syncNote() } class NoteData { +long textDataId +long callDataId +setTextData() +setCallData() +pushIntoContentResolver() } class WorkingNote { +long mNoteId +int mBgColorId +String mContent +long mAlertDate +long mModifiedDate +int mWidgetId +int mWidgetType +boolean mHasAttachment +long mFolderId +setAlertDate() +setBgColorId() +saveNote() +createEmptyNote() } class Notes { +AUTHORITY: String +TYPE_NOTE: int +TYPE_FOLDER: int +TYPE_SYSTEM: int +ID_ROOT_FOLDER: int +ID_TEMPARAY_FOLDER: int +ID_CALL_RECORD_FOLDER: int +ID_TRASH_FOLER: int } class NoteColumns { +ID: String +PARENT_ID: String +CREATED_DATE: String +MODIFIED_DATE: String +ALERTED_DATE: String +SNIPPET: String +WIDGET_ID: String +WIDGET_TYPE: String +BG_COLOR_ID: String +HAS_ATTACHMENT: String } class DataColumns { +ID: String +MIME_TYPE: String +NOTE_ID: String +CREATED_DATE: String +MODIFIED_DATE: String +CONTENT: String +DATA1: String +DATA2: String +DATA3: String +DATA4: String +DATA5: String } Note "1" *-- "1" NoteData : contains WorkingNote "1" --> "1" Note : uses Note --> Notes : uses constants Notes "1" *-- "1" NoteColumns : defines Notes "1" *-- "1" DataColumns : defines ``` ### 数据库模式图 ```mermaid erDiagram NOTE { long id PK long parent_id FK long alerted_date int bg_color_id long created_date boolean has_attachment long modified_date int notes_count string snippet int type int widget_id int widget_type long sync_id boolean local_modified long origin_parent_id string gtask_id long version } DATA { long id PK string mime_type long note_id FK long created_date long modified_date string content int data1 int data2 string data3 string data4 string data5 } NOTE ||--o{ DATA : "has" NOTE ||--o{ NOTE : "contains" ``` ### 创建新便签的时序图 ```mermaid sequenceDiagram actor User participant NLA as NotesListActivity participant WN as WorkingNote participant N as Note participant NP as NotesProvider participant DB as NotesDatabaseHelper User->>NLA: Click "New Note" NLA->>NLA: createNewNote() NLA->>WN: createEmptyNote() WN->>N: getNewNoteId() N->>NP: insert(ContentValues) NP->>DB: insert into note table DB-->>NP: return note id NP-->>N: return Uri with id N-->>WN: return note id WN-->>NLA: return WorkingNote instance NLA->>NLA: startActivity(NoteEditActivity) ``` ## 3. 项目架构图 ### MVC架构模式 ```mermaid graph TD A[Model
Note, WorkingNote, Notes] --> B[Controller
NotesProvider, NotesDatabaseHelper] B --> A C[View
NotesListActivity, NoteEditActivity] --> B B --> C C --> D[用户界面
XML布局文件] D --> C ``` ## 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设计规范 - 提供美观、直观的用户界面