我需要使用带闹钟管理器的广播吗?

bar*_*tul 1 android broadcastreceiver alarmmanager android-pendingintent

我正在创建一个警报应用程序,这是运行警报的方法:

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);
}
Run Code Online (Sandbox Code Playgroud)

并且在给定特定时间后运行此活动:

public class AlarmActivity extends Activity {
......
}
Run Code Online (Sandbox Code Playgroud)

它工作,但我看到人们正在使用BroadcastReceiver,我做错了吗?我也应该使用BroadcastReceiver吗?我一直在搜索BroadcastReceiver,但我不知道它会对我的应用程序产生什么影响.

谢谢.

Com*_*are 5

在一般情况下,A - C的答案是正确的.

但是,您正在使用RTC_WAKEUP警报类型.我们对警报的唯一保证_WAKEUP是,如果我们使用a BroadcastReceiver,那么 Android将确保设备保持清醒足够长的时间以便我们执行onReceive().任何其他类型的PendingIntent-活动或服务-有没有保证,这是非常可能的设备之前,回落睡着startActivity()startService()实际发生.