我正在安排如下警报(原谅丑陋的代码;我正在测试):
int code = new Random().nextInt();
Intent bIntent = new Intent(LaunchActivityReceiver.LAUNCH_ACTIVITY_ACTION);
bIntent.setClass(mContext, LaunchActivityReceiver.class);
PendingIntent broadcastIntent = PendingIntent.getBroadcast(mContext, code, bIntent, PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), broadcastIntent);
权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
日历将在未来设置为一分钟(我确信这一点)。顺便说一句,我知道一分钟是警报的短暂时间,但它是用于测试的。 8小时警报我注意到了这个问题。如果屏幕打开,则BroadcastReceiver会在一分钟后触发(除了打印到LogCat之外,它没有)。如果应用程序位于前台,则无关紧要。好的,太棒了。
如果屏幕关闭,我会得到非常奇怪的行为。我已经看到它在1.5分钟,3分钟,5分钟内发射,而且从未(厌倦了等待)。但是,一旦我打开屏幕,如果它已经没有,警报就会响起。就像RTC_WAKEUP被视为RTC一样。
这只发生在一些廉价的中国平板电脑上。不过它正在运行5.1。我不明白这种奇怪的行为。
这似乎是一个常见的问题,但其他人的解决方案并不奏效。我不是在改变时区或时间,我不需要敲响BroadcastReceiver,因为它除了打印到日志之外什么都不做,而且它不是日历的错误(如果它是,它每次设备没有睡觉时都不会工作。有什么想法吗?
答案 0 :(得分:0)
无论我尝试哪种选择,它都无法使用该设备。我认为设备的ROM在这方面就已经破了。