我想在特定时间唤醒一项活动。为此,我(也)在 Boot Complete BroadcastReceiver 上注册了 AlarmManager。
据我所知,只有服务可以永远在后台存活以唤醒活动。活动和广播接收器可能因不活动而死。
我拥有的以下代码没有运行服务。但是,它似乎正在工作(即使我在 24 小时后启动它,警报也会起作用)。这安全吗?还是我应该启动一项服务?如果这可以安全使用,这背后的逻辑是什么?为什么由 BroadcastReceiver 创建的 AlarmManger 不会被 Android 生命周期管理器销毁?
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
registerAlarm(context);
}
}
private void registerAlarm(Context context)
{
Intent intent = new Intent(context, Alarm.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am =(AlarmManager)context.getSystemService(Activity.ALARM_SERVICE);
long nextAlarm = System.currentTimeMillis() + 10000; //Some time later.
am.set(AlarmManager.RTC_WAKEUP, nextAlarm, pendingIntent);
}
}