我正在每分钟触发一次服务中使用AlarmManager。
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0,
getUpdateServiceIntent(mContext), PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
// Cancel any pending Intent
am.cancel(pendingIntent);
// Set a new one
am.set(AlarmManager.RTC_WAKEUP, 60000, pendingIntent);
在三星S5 Neo上:
屏幕处于 Activity 状态时,它按预期方式工作。
当屏幕关闭时,每5分钟(而不是一分钟)触发一次。
我在S5 Mini(使用Android 4.4),Nexus 5 5.1和Nexus 5 6.0上尝试使用了完全相同的代码,但该代码运行良好。
targetSdkVersion为19。
知道如何在屏幕关闭时如何使AlarmManager正常工作吗?
即使我要求30秒,延迟仍然是5分钟。
编辑 :
我也尝试了'setExact'方法,但没有任何改变。每个警报之间还有5分钟的间隔。
最佳答案
您可能应该使用AlarmManager#setExact(int type, long triggerAtMillis, PendingIntent operation)
代替AlarmManager#set(int type, long triggerAtMillis, PendingIntent operation))
Take a look
来自谷歌:AlarmManager#set(int type, long triggerAtMillis, PendingIntent operation))
编辑 :
我正在为警报应用程序使用什么:
显现 :<uses-permission android:name="android.permission.WAKE_LOCK"/>
Java代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(nextAlarm.getTimeInMillis(), pendingIntent);
alarmManager.setAlarmClock(alarmClockInfo, pendingIntent);
}else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(android.app.AlarmManager.RTC_WAKEUP, nextAlarm.getTimeInMillis(), pendingIntent);
}else {
alarmManager.set(android.app.AlarmManager.RTC_WAKEUP, nextAlarm.getTimeInMillis(), pendingIntent);
}
关于android - 在S5 Neo上的 sleep 模式下,AlarmManager无法按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33260851/