Android闹钟事件被延迟

时间:2015-12-16 07:35:22

标签: android android-alarms

我开发了我的android闹钟应用程序,每小时需要一些东西(如下午1点,下午2点,下午3点,下午4点,下午5点,下午6点等)。

现在我正在使用alarmManager,因此我每小时都会收到一次broadCast事件。但有时事件会延迟。

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

Log.d(Constants.APP_TAG, "setting beep alarm");
PendingIntent  pendingIntent = PendingIntent.getBroadcast( context, 0, new Intent("com.mindedges.beephourly.intent.action.NEW_HOUR"),PendingIntent.FLAG_UPDATE_CURRENT );

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, AlarmSheduleHelper.getImmediateNextHour().getTimeInMillis(),AlarmManager.INTERVAL_HOUR, pendingIntent);

如何确保我准确地按时收到广播事件。

PS:在一些特定的手机/ anroid版本上出现延迟

1 个答案:

答案 0 :(得分:4)

在Android 6.0 Marshmallow中,Google推出了“Doze”模式。

在此处详细了解:Optimizing for Doze and App Standby

和/或在这里观看:Android Marshmallow 6.0: Introduction to Doze Mode

在您的情况下,Google建议使用setAndAllowWhileIdle强制手机绕过打盹模式for (i in 1:6 (subfieldsdata)) {output <- cor(subfieldsdata$i,myData$NP_Age,use="everything", method="pearson") corr <- format(subcor, digits=3, nsmall=3) gp <- ggplot(data=myData,aes(x=myData$NP_Age,y=subfieldsdat$i)) gp+geom_point()+stat_smooth(method="lm")+labs(x="age", y="i")+theme_linedraw(base_size=25)+annotate("text", x=c(88,90), y=1000, label=c("Pearson r =", corr))} (和setExactAndAllowWhileIdle而不是set。)

NB!看起来,setExact没有类似物,因此您必须逐个“{3}}手动”安排下一次重复。

对于使用Android 4.4 KitKat及更高版本的设备 - 请考虑使用setExactAndAllowWhileIdle而不是旧setRepeating,因为操作系统会尝试移动警报以最大限度地减少唤醒和电池使用。

可能需要记住更多要点 - 例如,某些原始设备制造商可能预装了自己的工具,以节省电池寿命,但至少它必须覆盖Android产品和大多数流行设备。