1

J'ai simplement fonctionnelle pour le service de démarrage et le répète, il:Pourquoi le service ne fonctionne pas "immédiatement"?

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

Je comprends la documentation: gestionnaire d'alarme quel que soit l'état de l'appareil (sommeil ou non) démarrer le service par 2000 ms et répéter avec un intervalle mIntervalInMs.

Mais le service commence à fonctionner après 30-50 secondes après l'exécution de ce code. Qu'est-ce que je fais mal ou ne comprends pas la documentation?

+0

Sur quelle version d'Android votre application fonctionne-t-elle? Aussi, quelle est votre 'targetSdkVersion'? – CommonsWare

+0

Dispositif @CommonsWare: samsung avec 23 (android 6) et cible: targetSdkVersion 25 – abbath0767

Répondre

1

setRepeating() est "inexact" avec un targetSdkVersion de 19 ou supérieur lors de l'exécution sur un appareil Android niveau 19+ API. Par conséquent, vos résultats ne sont pas surprenants. Les événements se produiront quelque part autour de l'heure souhaitée (jusqu'à ce que le mode Doze d'Android 6.0 entre en jeu), mais ils ne se produiront pas exactement au moment voulu.

+0

hm. J'ai le drapeau ACTION_IGNORE_BATTERY_OPTIMIZATION et sa permission dans les paramètres (application pour seulement moi, je sais ce qui est mauvais =)). Comment fonctionne alors une autre application avec horloge-alarme? Ils réveillent l'utilisateur (et le smartphone) à un certain moment, pas une minute plus tôt ni plus tard. – abbath0767

+0

@ abbath0767: "Comment fonctionne alors une autre application avec horloge-alarme?" - Les applications de réveil utiliseront 'setAlarmClock()' sur 'AlarmManager'. Voir [cette réponse] (https://stackoverflow.com/a/34699710/115145) pour plus d'informations. – CommonsWare