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.
git/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java

63 lines
2.8 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.

/*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.micode.notes.ui;
import android.content.BroadcastReceiver; // 广播接收器基类,用于接收系统广播
import android.content.Context; // 应用上下文,提供访问应用环境和资源的接口
import android.content.Intent; // 意图,用于组件间通信
/**
* 闹钟接收器
*
* 这个类继承自BroadcastReceiver用于接收由AlarmManager设置的闹钟触发事件。
* 当笔记的提醒时间到达时AlarmManager会发送一个广播这个接收器会接收该广播
* 并启动闹钟提醒界面(AlarmAlertActivity)来显示提醒信息。
*
* 工作流程:
* 1. AlarmInitReceiver为每个设置了提醒时间的笔记设置系统闹钟
* 2. 当提醒时间到达时,系统发送广播
* 3. AlarmReceiver接收广播并启动AlarmAlertActivity显示提醒
*/
public class AlarmReceiver extends BroadcastReceiver {
/**
* 接收闹钟广播后的处理方法
*
* 当闹钟时间到达时,系统会发送广播,此方法会被调用。
* 它会将接收到的Intent重新定向到AlarmAlertActivity并添加FLAG_ACTIVITY_NEW_TASK标志
* 确保即使在非UI上下文中也能启动Activity。
*
* @param context 应用上下文用于启动Activity
* @param intent 接收到的闹钟广播Intent包含触发闹钟的笔记ID等信息
*/
@Override
public void onReceive(Context context, Intent intent) {
// 将Intent的目标组件设置为AlarmAlertActivity
// 这样当启动Activity时就会显示闹钟提醒界面
intent.setClass(context, AlarmAlertActivity.class);
// 添加FLAG_ACTIVITY_NEW_TASK标志
// 这是必需的因为从非Activity上下文(如BroadcastReceiver)启动Activity时
// 必须指定这个标志,表示启动一个新的任务栈
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// 启动AlarmAlertActivity显示闹钟提醒
// 原始Intent中包含了触发闹钟的笔记ID等信息AlarmAlertActivity会使用这些信息
// 来显示相应的笔记内容和提醒信息
context.startActivity(intent);
}
}