2017-01-06 18 views
1

ich einen Alarm bin Planung, wie unten (entschuldigen Sie den hässlichen Code, ich teste):RTC_WAKEUP nicht auf allen Geräten funktioniert

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); 

Berechtigungen:

<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"/> 

Der Kalender ist auf eine Minute in der Zukunft (davon bin ich überzeugt). Nebenbei bemerkt, eine Minute ist sehr kurz für einen Alarm, aber es ist zum Testen. Ich habe dieses Problem bei einem 8-Stunden-Alarm bemerkt. Wenn der Bildschirm eingeschaltet ist, wird der BroadcastReceiver genau eine Minute später ausgelöst (es tut nichts außer Drucken in LogCat). Es spielt keine Rolle, ob die App im Vordergrund ist oder nicht. OK, großartig.

Wenn der Bildschirm ausgeschaltet ist, bekomme ich dramatisch seltsames Verhalten. Ich habe es in 1,5 Minuten, 3 Minuten, 5 Minuten und nie gesehen (wurde müde vom Warten). Sobald ich den Bildschirm einschalte, wird der Alarm jedoch ausgelöst, wenn es nicht bereits geschehen ist. Es ist, als ob RTC_WAKEUP nur als RTC behandelt wird.

Dies passiert nur auf einigen billigen chinesischen Tablet. Es läuft jedoch 5.1. Ich verstehe dieses merkwürdige Verhalten nicht.

Dies scheint ein häufiges Problem zu sein, aber die Lösungen für andere hat nicht funktioniert. Ich ändere nicht die Zeitzonen oder die Zeit überhaupt, ich brauche den BroadcastReceiver nicht zu stören, da er nichts anderes tut, als in das Protokoll zu drucken, und es ist kein Fehler mit dem Kalender (wenn es so wäre, würde es nicht jedes Mal funktionieren) das Gerät schläft nicht). Irgendwelche Ideen?

+0

Haben Sie stattdessen 'setAlarmClock()' ausprobiert? –

+0

setAlarmClock() hat nicht funktioniert. Das exakt gleiche Verhalten wurde beobachtet. –

+0

Ich habe einmal eine ähnliche Frage gestellt. Es hört sich an, als wäre das System gerade beschäftigt und es dauert eine Weile, weil es nicht sehr leistungsfähig ist. Siehe hier: http://stackoverflow.com/questions/24724859/alarmmanager-setexact-with-wakefulbroadcastcreceiver-estimes-not-exact – MobileMon

Antwort

0

Es funktionierte nie mit diesem Gerät, egal welche Optionen ich ausprobierte. Ich denke, dass das ROM des Geräts in dieser Hinsicht gerade gebrochen ist.

Verwandte Themen