繁体   English   中英

警报管理器唤醒

[英]alarm manager wakeup

我试图设置一个后台“服务”,该服务每分钟都会触发一个执行某些操作的活动。 我找到了Alarm Manager类,并根据Android文档编写了以下代码:

Intent backg = new Intent(getApplicationContext(), CheckConnectivity.class);
boolean backgRunning = (PendingIntent.getBroadcast(getApplicationContext(), 0, backg, PendingIntent.FLAG_NO_CREATE) != null);
if(!backgRunning) {
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, backg, 0);
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 60000, pendingIntent);
}

但该服务并非每分钟触发一次,但似乎仅在屏幕关闭时才起作用。 你知道为什么吗? 我究竟做错了什么?

警报管理器不可靠,这就是Android引入Job Scheduler的原因。 但是您不能使用Job Scheduler <21。因此,Android在Android Architecture Component中引入了Work Manager 由AlarmManager或JobScheduler在内部处理您的工作。

另一个好的方法是使用Evernote的Jobs ,它将使用下一版本的WorkManager。

最后,我建议您使用工作管理器而不是AlarmManager。

另请参阅我对打ze模式/背景限制的说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM