Android闹钟迟到12小时

时间:2017-01-10 09:40:14

标签: android xamarin.android alarmmanager android-alarms

我已经设置闹钟(在我们正在开发的闹钟应用中)8:58(24小时格式)。

警报未触发 - 警报图标仍处于状态栏 - 当我写adb shell dumpsys alarm时,我可以看到:

Batch{6b33bdb num=1 start=99803288 end=99803288 flgs=0x3}:
  RTC_WAKEUP #0: Alarm{3e3da2e type 0 when 1484078280736 my.app}
  tag=*walarm*:my.app/md5f98255d9820be5cc9672d0645bf1ca12.RingBroadcastReceiver
  type=0 whenElapsed=+11h1m53s125ms when=2017-01-10 20:58:00
  window=0 repeatInterval=0 count=0 flags=0x3
  Alarm clock:
    triggerTime=2017-01-10 08:58:00
    showIntent=PendingIntent{21219cf: PendingIntentRecord{aac3f5c my.app startActivity}}
  operation=PendingIntent{ecde88f: PendingIntentRecord{821c71c my.app broadcastIntent}}

Next wake from idle: Alarm{3e3da2e type 0 when 1484078280736 my.app}
  tag=*walarm*:my.app/md5f98255d9820be5cc9672d0645bf1ca12.RingBroadcastReceiver
  type=0 whenElapsed=+11h1m53s125ms when=2017-01-10 20:58:00
  window=0 repeatInterval=0 count=0 flags=0x3
  Alarm clock:
    triggerTime=2017-01-10 08:58:00
    showIntent=PendingIntent{21219cf: PendingIntentRecord{aac3f5c my.app startActivity}}
  operation=PendingIntent{ecde88f: PendingIntentRecord{821c71c my.app broadcastIntent}}

问题是:在when之后12小时triggerTime怎么可能?

似乎是12/24小时格式问题,但我的设备以及我的应用和时间选择器都设置为24小时格式。这个问题只发生过一次。当我设置新警报时,它会按预期工作。

有什么想法吗?

更新 我们正在使用此代码来设置警报(抱歉Xamarin语法),我已经测试了alarmEntity正在返回正确的时间。问题必须在这个代码或设备/ android /系统的东西。从triggerTime=2017-01-10 08:58:00我觉得代码没问题,系统或报警管理器也存在问题。

DateTime closestTrigger = alarmEntity.GetTime();

Calendar calendar = Calendar.Instance;
calendar.Set(CalendarField.Year, closestTrigger.Year);
calendar.Set(CalendarField.Month, closestTrigger.Month - 1);
calendar.Set(CalendarField.DayOfMonth, closestTrigger.Day);
calendar.Set(CalendarField.HourOfDay, closestTrigger.Hour);
calendar.Set(CalendarField.Minute, closestTrigger.Minute);
calendar.Set(CalendarField.Second, closestTrigger.Second);

var alarmInfo = new AlarmManager.AlarmClockInfo(calendar.TimeInMillis, mainPendingIntent);
manager.SetAlarmClock(alarmInfo, ringPendingIntent);

更新2: 我在同一个dumpsys警报日志中找到了一条更重要的行:

Next alarm clock information: 
user:0 pendingSend:false time:1484035080736 = 2017-01-10 08:58:00 = -58m6s876ms

..这意味着错过了警报,但系统甚至没有试图呈现它,logcat在8:58附近没有显示任何活动。并且仍然不清楚为什么系统会将闹钟重新安排到20:58。

0 个答案:

没有答案