2017-06-30 5 views
1

Mon application doit fonctionner en arrière-plan pendant une longue période et envoyer périodiquement des données au serveur. J'ai essayé AlarmManager mais il est limité en mode somnolence. Je pense ensuite au service de premier plan.L'appareil passe-t-il en mode veille lorsque le service de premier plan est en cours

L'appareil passe-t-il en mode d'attente pendant qu'un service d'avant-plan est en cours d'exécution?

Si l'appareil passe en mode veille, la connexion Internet est-elle restreinte alors que le service de premier plan est en cours d'exécution?

Répondre

0

qui fonctionne pour moi assez bien, testé plusieurs heures de fonctionnement en continu avec des émulateurs et Android 6.0 et 7.1 des appareils réels, connexion réseau n'a jamais perdu:

Dans l'activité principale OnPause j'acquiers une WakeLock partielle et I démarrer un service avec l'intention STARTFOREGROUND_ACTION, le service appelle startForeground et affiche une notification.

Activité onResume le WakeLock est libéré, le Service arrête avec l'intention de STOPFOREGROUND_ACTION et le service lui-même appelle stopForeground & stopSelf.

Et qui évite l'activité à détruire sur Retour sur la touche:

@Override 
    public void onBackPressed() { 
     moveTaskToBack(true); 
    } 

Bien sûr, je fournis une option de menu pour arrêter l'arrière-plan porcessing et terminer l'activité

Mon code demander périodiquement un serveur Internet est placé dans l'activité, il utilise une minuterie.

J'espère que cela aidera

+0

Je n'ai pas tout à fait votre solution ici. Le mode Android Doze ignore tous les verrous de sillage. – jarly

+0

Pas pour moi avec un service de premier plan actif + Notification. J'ai déjà testé dans plusieurs appareils réels. –

+0

Profondément discuté ici: https://stackoverflow.com/questions/37869201/how-does-doze-mode-affect-background-foreground-services-with-with-partial-f –