diff --git a/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java b/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java index f1c9197..179e45f 100644 --- a/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java +++ b/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java @@ -40,7 +40,25 @@ import net.micode.notes.tool.DataUtils; import java.io.IOException; - +/** + * 这个类是一个 AlarmAlertActivity 类,实现了 OnClickListener 和 OnDismissListener 接口。该类还包含以下成员变量和方法: + * + * 成员变量: + * + * mNoteId:用于存储闹钟的 ID。 + * mSnippet:用于存储闹钟的摘要,最大长度为 SNIPPET_PREW_MAX_LEN。 + * SNIPPET_PREW_MAX_LEN:用于限制闹钟摘要的最大长度为 60 个字符。 + * mPlayer:用于播放闹钟铃声的 MediaPlayer 对象。 + * 方法: + * + * onClick(View v):实现了 OnClickListener 接口中的方法,用于处理单击事件。 + * onDismiss(DialogInterface dialog):实现了 OnDismissListener 接口中的方法,用于处理对话框关闭事件。 + * onCreate(Bundle savedInstanceState):Activity 的生命周期方法,在 Activity 创建时被调用,用于初始化界面。 + * onResume():Activity 的生命周期方法,在 Activity 恢复时被调用,用于启动闹钟铃声。 + * onPause():Activity 的生命周期方法,在 Activity 暂停时被调用,用于停止闹钟铃声。 + * onStop():Activity 的生命周期方法,在 Activity 停止时被调用,用于释放 MediaPlayer 资源。 + * onDestroy():Activity 的生命周期方法,在 Activity 销毁时被调用,用于释放 MediaPlayer 资源。 + */ public class AlarmAlertActivity extends AppCompatActivity implements OnClickListener, OnDismissListener { private long mNoteId; private String mSnippet; diff --git a/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java b/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java index f221202..c2f56eb 100644 --- a/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java +++ b/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java @@ -27,7 +27,17 @@ import android.database.Cursor; import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.NoteColumns; - +/** + * AlarmInitReceiver 类是一个广播接收器,用于初始化并为笔记安排提醒闹钟。我们分析分析它做了什么: + * + * 它导入了 AlarmManager 和 PendingIntent 等Android类,以便能够安排闹钟意图。 + * + * 当它接收到广播时,它将查询笔记数据库以获取所有需要闹钟提醒的笔记。它使用 PROJECTION 数组仅获取笔记ID和提醒日期列。 + * + * 从笔记结果中,它将为每个笔记使用AlarmManager 和PendingIntent 安排闹钟。PendingIntent 将触发另一个广播接收器来处理实际的闹钟通知。 + * + * 此接收器的 intent filter 很可能在AndroidManifest.xml 中定义,用于监听像 "android.intent.action.BOOT_COMPLETED" 这样的操作。这意味着设备启动后它将初始化和为所有笔记安排闹钟。 + */ public class AlarmInitReceiver extends BroadcastReceiver { private static final String [] PROJECTION = new String [] { diff --git a/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java b/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java index 96b77da..c6b5f79 100644 --- a/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java +++ b/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java @@ -28,6 +28,27 @@ import net.micode.notes.R; import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.NoteColumns; +/** + * FoldersListAdapter 类是一个 CursorAdapter ,用来从 Cursor(数据库查询结果)加载文件夹列表。 + * + * 主要点: + * + * 定义了 PROJECTION 数组,其中包含从数据库读取的列: 笔记ID 和 片段。 + * + * 定义了投影中列索引的常量:ID_COLUMN 和 NAME_COLUMN。这被用来从 Cursor 获取值。 + * + * 构造函数调用了父 CursorAdapter 构造函数,传入 Context 和 Cursor。 + * + * 它可能实现 newView() 和 bindView() 方法来实际实例化列表项视图并将数据绑定到它们。 + * + * 所以总的来说,这个适配器类: + * + * 定义了需要从数据库读取的列 + * 提供了列索引常量 + * 在构造函数中接受 Cursor + * 在 newView()中创建列表项视图 + * 在bindView()中将数据绑定到这些视图 + */ public class FoldersListAdapter extends CursorAdapter { public static final String [] PROJECTION = { diff --git a/app/src/main/java/net/micode/notes/ui/NoteEditText.java b/app/src/main/java/net/micode/notes/ui/NoteEditText.java index 24278b5..6da508c 100644 --- a/app/src/main/java/net/micode/notes/ui/NoteEditText.java +++ b/app/src/main/java/net/micode/notes/ui/NoteEditText.java @@ -37,6 +37,34 @@ import net.micode.notes.R; import java.util.HashMap; import java.util.Map; +/** + * 这是一个自定义的编辑笔记文字的 EditText widgets。 + * + * 主要功能: + * + * 它继承自兼容库的 AppCompatEditText 类,用于兼容性。 + * + * 它有一些私有属性: + * + * mIndex - 可能是这个 EditText 在列表中的索引 + * mSelectionStartBeforeDelete - 删除操作前文本选择的开始位置 + * 它有常量来检测常见的URL协议:tel、http和mailto。 + * + * 它有一个用来显示上下文菜单的Scheme到action资源ID的映射。上下文菜单包含用于检测的方案的操作。 + * + * 它可能覆盖以下方法: + * + * onTextChanged() - 检测文本变化并检查 URL 协议 + * onCreateContextMenu() - 使用检测到的方案操作来填充上下文菜单 + * onClick() - 文本点击时显示上下文菜单 + * 总的来说,这个定制的 EditText: + * + * 继承自 AppCompatEditText + * 有用来保存它的索引和删除前选择的属性 + * 检测文本中的常见URL协议 + * 显示带有URL协议操作项目的上下文菜单 + * 可能覆盖相关方法来实现这个行为 + */ public class NoteEditText extends android.support.v7.widget.AppCompatEditText { private static final String TAG = "NoteEditText"; private int mIndex;