我想在特定時間喚醒活動。爲此,我(也)在引導完成的BroadcastReceiver上註冊了AlarmManager。Android:BroadcastReceiver上AlarmManager的生命週期
據我所知,只有服務可以在後臺永遠活着以喚醒活動。活動和BroadcastReceiver可能因無活動而死亡。
以下代碼我沒有運行服務。但是,它似乎正在工作(即使在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);
}
}