我编写了一个小应用程序,它使用当天间隔的AlarmManager来调用服务。要测试这个应用程序,我正在使用模拟器5.1。当我手动设置日期和时间(当前日期或未来日期时间)时,AlarmManager会调用当天的服务。当我试图通过更改日期来更改日期以检查它是否会在其他日期工作时,那么它不会调用服务。
这是我的代码。
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(calendar.HOUR_OF_DAY,13);
calendar.set(calendar.MINUTE,20);
calendar.set(Calendar.SECOND,10);
alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this,BackgroundService.class);
pendingIntent = PendingIntent.getService(this, 0, intent, 0);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
BackgroundService是一个用Toast弹出的服务。
我有2个问题。
非常感谢您的帮助。
谢谢。
答案 0 :(得分:0)
alarmManager.setInexactRepeating
方法,但不保证报警发送的确切时间。要获得更精确的时序,请使用alarmManager.setRepeating
,但请记住,这并不是真正推荐的,因为大多数用例不需要精确的时序,并且会导致更高的电池使用量。请参阅inexactRepeating和repeating