alarm manager wakeup
我试图设置一个后台"服务",该服务每分钟都会触发一个执行某些操作的活动。我找到了警报管理器类,并基于Android doc编写了此代码:
1 2 3 4 5 6 7 | 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模式/背景限制的说明。