SAb*_*deh 8 android alarmmanager android-pendingintent
这是我用来为我的小部件设置警报的代码:
private static void setAlarm(Context context) {
Intent myIntent = new Intent(context, Widget.class);
myIntent.setAction(AUTO_UPDATE);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(context, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Service.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 8);
alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 8000,
pendingIntent);
}
Run Code Online (Sandbox Code Playgroud)
但问题是即使在睡眠模式下,onReceive()仍然会被意图触发.
虽然使用后setInexactRepeating代替setRepeating,调用之间的延迟时间也会上升到在睡眠模式下1分,但是这仍然是电池消耗.
我相信您将闹钟设置为在日历时间后 8 秒触发,您已将日历时间设置为比当前时间提前 8 秒..因此您将闹钟设置为立即触发。
我不明白你有什么理由需要这里的日历。此处日历仅用于跟踪未来 8 秒的时间:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 8);
Run Code Online (Sandbox Code Playgroud)
此处创建的警报每 8 秒触发一次:
alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 8000,
pendingIntent);
Run Code Online (Sandbox Code Playgroud)
警报继续每八秒触发一次。
我会尝试改变:
alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 8000,
pendingIntent);
Run Code Online (Sandbox Code Playgroud)
到:
alarmManager.setInexactRepeating(AlarmManager.RTC, System.currentTimeMillis(), 8000,
pendingIntent);
Run Code Online (Sandbox Code Playgroud)
如果您仍然遇到问题,那么可能是间隔问题。尝试更改一下setRepeating(),set()看看是否是这样。
| 归档时间: |
|
| 查看次数: |
1096 次 |
| 最近记录: |