2017-01-06 2 views
1

Я планирования тревоги, как показано ниже (извините уродливый код, я тестировал):RTC_WAKEUP не работает на всех устройствах

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

Вы попробовали 'setAlarmClock()' вместо этого? –

+0

комплектAlarmClock() не работает. Точно такое же поведение наблюдалось. –

+0

Я как-то задал вопрос, похожий на этот вопрос. Похоже, система просто занята, и это требует времени, потому что она не очень мощная. См. Здесь: http://stackoverflow.com/questions/24724859/alarmmanager-setexact-with-wakefulbroadcastreceiver-sometimes-not-exact – MobileMon

ответ

0

Он никогда не работал с этим устройством, независимо от того, какие параметры я пытался. Я думаю, что ROM этого устройства просто сломан в этом отношении.

Смежные вопросы