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 779ca0f..008dab6 100644 --- a/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java +++ b/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java @@ -34,6 +34,9 @@ import net.micode.notes.data.Notes.NoteColumns; public class AlarmInitReceiver extends BroadcastReceiver { // 数据格式封包 + /** + * 对数据库的操作,调用标签ID和闹钟时间 + */ private static final String[] PROJECTION = new String[]{ NoteColumns.ID, NoteColumns.ALERTED_DATE @@ -46,11 +49,21 @@ public class AlarmInitReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { long currentDate = System.currentTimeMillis(); + /** + * System.currentTimeMillis()产生一个当前的毫秒 + * 这个毫秒其实就是自1970年1月1日0时起的毫秒数 + */ Cursor c = context.getContentResolver().query(Notes.CONTENT_NOTE_URI, PROJECTION, NoteColumns.ALERTED_DATE + ">? AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE, new String[]{String.valueOf(currentDate)}, + /** + * 将long变量currentDate转化为字符串 + */ null); + /** + * Cursor在这里的作用是通过查找数据库中的标签内容,找到和当前系统时间相等的标签 + */ if (c != null) { if (c.moveToFirst()) { @@ -66,5 +79,10 @@ public class AlarmInitReceiver extends BroadcastReceiver { } c.close(); } + /** + * 然而通过网上查找资料发现,对于闹钟机制的启动,通常需要上面的几个步骤 + * 如新建Intent、PendingIntent以及AlarmManager等 + * 这里就是根据数据库里的闹钟时间创建一个闹钟机制 + */ } } diff --git a/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java b/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java index 27cefef..27db98e 100644 --- a/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java +++ b/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java @@ -30,7 +30,18 @@ public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { intent.setClass(context, AlarmAlertActivity.class); + /** + * 启动AlarmAlertActivity + */ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + /** + * activity要存在于activity的栈中,而非activity的途径启动activity时必然不存在一个activity的栈 + * 所以要新起一个栈装入启动的activity + */ context.startActivity(intent); } } +/** + * 这是实现alarm这个功能最接近用户层的包,基于上面的两个包, + * 作用还需要深究但是对于setClass和addFlags的 + */ \ No newline at end of file diff --git a/app/src/main/java/net/micode/notes/ui/DateTimePicker.java b/app/src/main/java/net/micode/notes/ui/DateTimePicker.java index a189109..0461b24 100644 --- a/app/src/main/java/net/micode/notes/ui/DateTimePicker.java +++ b/app/src/main/java/net/micode/notes/ui/DateTimePicker.java @@ -32,7 +32,10 @@ import android.widget.NumberPicker; * 日期选择器,是 [FrameLayout] 的子类 */ public class DateTimePicker extends FrameLayout { - + /** + * FrameLayout是布局模板之一 + * 所有的子元素全部在屏幕的右上方 + */ private static final boolean DEFAULT_ENABLE_STATE = true; /** @@ -73,6 +76,10 @@ public class DateTimePicker extends FrameLayout { /** * 日期实例对象 */ + /** + * NumberPicker是数字选择器 + * 这里定义的四个变量全部是在设置闹钟时需要选择的变量(如日期、时、分、上午或者下午) + */ private Calendar mDate; /** * 日期显示的数值 @@ -120,6 +127,10 @@ public class DateTimePicker extends FrameLayout { * 在数值改变时传入选择器对象和操作前与操作后的数值 * 对数值进行具体的分析 */ + /** + * OnValueChangeListener,这是时间改变监听器,这里主要是对日期的监听 + * 将现在日期的值传递给mDate;updateDateControl是同步操作 + */ private NumberPicker.OnValueChangeListener mOnHourChangedListener = new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { diff --git a/local.properties b/local.properties index 9c9a286..d595b42 100644 --- a/local.properties +++ b/local.properties @@ -4,5 +4,5 @@ # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. -#Fri Apr 14 13:58:58 CST 2023 -sdk.dir=C\:\\Users\\MikkoAyaka\\AppData\\Local\\Android\\Sdk +#Fri Mar 31 16:29:58 CST 2023 +sdk.dir=D\:\\android studio SDK