|
|
/*
|
|
|
* 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;
|
|
|
|
|
|
public class AlarmReceiver extends BroadcastReceiver {
|
|
|
@Override
|
|
|
public void onReceive(Context context, Intent intent) {
|
|
|
intent.setClass(context, AlarmAlertActivity.class);
|
|
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
context.startActivity(intent);
|
|
|
}
|
|
|
}
|
|
|
package net.micode.notes.ui;
|
|
|
|
|
|
import android.content.BroadcastReceiver;
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
|
|
|
// AlarmReceiver类继承自BroadcastReceiver,是一个广播接收器,用于接收特定的广播消息并做出相应的响应。
|
|
|
// 在这个场景下,大概率是接收与闹钟提醒相关的广播,然后启动对应的闹钟提醒界面Activity。
|
|
|
public class AlarmReceiver extends BroadcastReceiver {
|
|
|
|
|
|
// onReceive方法是BroadcastReceiver类中最重要的方法,当该广播接收器接收到与之匹配的广播时,此方法会被调用。
|
|
|
// 它接收两个参数:
|
|
|
// 1. context:表示当前应用的上下文环境,通过它可以访问应用的各种资源、服务等内容。
|
|
|
// 2. intent:包含了发送广播时所携带的信息,例如额外的数据、动作(Action)等,在这里它可能携带了与闹钟提醒相关的一些标识信息等。
|
|
|
@Override
|
|
|
public void onReceive(Context context, Intent intent) {
|
|
|
// 通过intent.setClass方法,重新设置该Intent要启动的目标Activity类为AlarmAlertActivity.class。
|
|
|
// 这意味着当这个Intent被启动时,将会启动AlarmAlertActivity这个界面,通常AlarmAlertActivity就是用于展示闹钟提醒具体内容(如提醒的便签信息、播放提醒声音等)的界面。
|
|
|
intent.setClass(context, AlarmAlertActivity.class);
|
|
|
|
|
|
// 为Intent添加FLAG_ACTIVITY_NEW_TASK标志。
|
|
|
// 这个标志的作用是:如果当前应用处于后台或者没有任何任务栈存在的情况下,添加此标志可以确保新启动的Activity能够在一个新的任务栈中被启动,
|
|
|
// 避免出现因任务栈相关问题而导致Activity启动失败等异常情况,保证闹钟提醒界面能够正常展示给用户。
|
|
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
|
|
|
// 使用传入的context上下文对象,调用startActivity方法来启动经过上述设置后的Intent。
|
|
|
// 这样就会触发启动AlarmAlertActivity,使得用户可以看到闹钟提醒的相关界面,完成从接收到闹钟提醒广播到展示提醒界面的整个流程。
|
|
|
context.startActivity(intent);
|
|
|
}
|
|
|
} |