1

Ich habe einfach funktional für Start-Service und wiederhole er:Warum funktioniert der Dienst nicht "sofort"?

mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); 

PendingIntent pIntent = PendingIntent.getService(mContext, 
       SendStatusService.SEND_STATUS_SERVICE_CODE, 
       mIntent, 
       PendingIntent.FLAG_UPDATE_CURRENT); 

mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
       SystemClock.elapsedRealtime() + 2000, 
       mIntervalInMs, 
       pIntent); 

verstehe ich die Dokumentation: Alarmmanager unabhängig vom Gerätezustand (sleep oder nicht) Dienst bis 2000 ms starten und wiederholen Sie mit Intervall mIntervalInMs.

Aber Service beginnt nach 30-50 Sekunden nach dem Ausführen dieses Codes zu arbeiten. Was mache ich falsch oder nicht verstehen die Dokumentation?

+0

In welcher Android-Version läuft Ihre App? Was ist deine 'targetSdkVersion'? – CommonsWare

+0

@CommonsWare Gerät: Samsung mit 23 (Android 6) und Ziel: targetSdkVersion 25 – abbath0767

Antwort

1

setRepeating() ist "ungenau" mit einem targetSdkVersion von 19 oder höher, wenn auf einem API Level 19+ Android-Gerät ausgeführt wird. Daher sind Ihre Ergebnisse nicht überraschend. Die Ereignisse werden irgendwo um die gewünschte Zeit (bis Android 6.0 Doze-Modus eintritt) auftreten, aber sie werden nicht genau zur gewünschten Zeit auftreten.

+0

hm. Ich habe ACTION_IGNORE_BATTERY_OPTIMIZATION und seine Erlaubnis in Einstellungen (app nur für mich. Ich weiß, was ist schlecht =)). Wie funktioniert dann eine andere App mit Uhr-Alarm? Sie wecken den Benutzer (und das Smartphone) zu einer bestimmten Zeit, keine Minute früher oder später. – abbath0767

+0

@ abbath0767: "Wie funktioniert dann eine andere App mit Uhr-Alarm?" - Wecker-Apps verwenden 'setAlarmClock()' auf 'AlarmManager'. Siehe [diese Antwort] (https://stackoverflow.com/a/34699710/115145) für mehr. – CommonsWare

Verwandte Themen