【发布时间】:2016-05-27 20:21:16
【问题描述】:
我的 AlarmManager API 有问题,它在我的三星设备上根本不启动,但它在其他 Android 设备上运行...
我的代码是这样的:
public void setAlarm(int hourAlarm, int minutesAlarm, int numeroAlarm, boolean yesOrNoRepeatAlarm) {
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, numeroAlarm, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Log.i("numeroAlarm", numeroAlarm + "");
Calendar calendar = Calendar.getInstance();
if( (calendar.get(Calendar.HOUR_OF_DAY) > hourAlarm) ||
( calendar.get(Calendar.HOUR_OF_DAY) == hourAlarm && calendar.get(Calendar.MINUTE) > minutesAlarm)) {
calendar.add(Calendar.DATE, 1);
}
calendar.set(Calendar.HOUR_OF_DAY, hourAlarm);
calendar.set(Calendar.MINUTE, minutesAlarm);
Log.i("timeInMillis", calendar.getTimeInMillis() + "");
Log.i("repeatingAlarm", yesOrNoRepeatAlarm + "");
if(yesOrNoRepeatAlarm) {
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
else {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
}
它可以在其他设备上完美运行(特别是在 kitkat 上),但不能在我的三星设备上的棒棒糖上运行, 请问你有什么想法吗?
【问题讨论】:
-
如果我不得不猜的话,你正在被三星专有的电池扩展技术所困扰,类似于 Android 6.0 中的打盹模式。搜索设备的电池/电源设置,看看是否可以找到它是否已启用。如果是,请禁用它(或将您的应用程序列入白名单,如果这是一个选项)并重新运行您的测试。如果您的代码现在可以工作,那么您就知道困难的根源。除了 Android 6.0+ 之外,SONY 设备和可能的其他设备也有类似的功能。
标签: android alarmmanager android-5.0-lollipop samsung-mobile