我正在创建一个警报应用程序,这是运行警报的方法:
public void startAlarm(int minuteToStart)
{
Toast.makeText(context, "Alarm Start in " + formatTime(minuteToStart), Toast.LENGTH_SHORT).show();
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, minuteToStart);
Intent intent = new Intent(context, AlarmActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, idPendingIntent, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
}
它会在给定的特定时间后运行此 Activity :
public class AlarmActivity extends Activity {
......
}
它有效,但我看到人们正在使用 BroadcastReceiver,我做错了吗?我也应该使用 BroadcastReceiver 吗?我一直在搜索 BroadcastReceiver,但我不知道它会对我的应用程序产生什么影响。
谢谢。
最佳答案
在一般情况下,A--C 的答案应该是正确的。
但是,您正在使用 RTC_WAKEUP
作为闹钟类型。 唯一我们使用_WAKEUP
警报的保证是如果我们使用BroadcastReceiver
,那么 Android 将确保设备保持唤醒状态足够长的时间,以便我们执行 onReceive()
。任何其他类型的 PendingIntent
- Activity 或服务 - 都无法保证,并且设备很可能在 startActivity()
或 之前重新进入休眠状态>startService()
实际发生。
关于android - 我需要将广播与警报管理器一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617201/