2017-08-05 2 views
0

J'appelle une connexion HTTPS du service Web de la classe Service qui est appelée par le gestionnaire d'alarme toutes les 1 min.Lorsque je démarre le service fonctionne correctement j'obtiens la réponse du service Web jusqu'à ce que l'appareil passe en mode veille. off, sur le prochain appel de service web, je reçois ce eRROR-pourquoi je reçois SoketTimeOutException en mode veille de l'appareil?

com.turbomanage.httpclient.HttpRequestException: java.net.SocketTimeoutException: connect timed out 

continuera jeter cette exception jusqu'à ce que je Wakeup l'appareil device.When obtenir Wakeup le webservice commencer à obtenir la réponse du serveur et je ne reçois pas exception alors . Alors s'il vous plaît quelqu'un me dire quel pourrait être le problème.Le dispositif de test est Nexsus 5X.

Répondre

1

J'appelle une connexion HTTPS de service Web de la classe de service qui est appelé par le gestionnaire d'alarme dans tous les 1 min

qui ne fonctionne pas sur Android 6.0+, à moins que votre application est sur l'optimisation de la batterie liste blanche Le mode Doze arrête la plupart de vos alarmes, et dans les cas où vous avez le contrôle, vous n'avez peut-être pas accès à Internet. En outre, gardez à l'esprit que le réveil de l'appareil toutes les minutes pour aller effectuer des E/S réseau drainera la batterie, ce qui explique pourquoi Android 6.0 a introduit le mode Doze en premier lieu.

+0

alors quelle est la solution alors? – shyam002

+0

@ shyam002: Je ne sais pas quel est le problème. Il n'y a aucune garantie que vous disposerez d'une connexion Internet à tout moment, pour toutes sortes de raisons (par exemple, le mode avion). Vous devriez gérer cela comme vous le feriez pour tout autre manque de connectivité. – CommonsWare

+0

@ shyam002: Si vous souhaitez maximiser les chances que vous ayez une connexion Internet en mode veille sur Android 6.0+, demandez à l'utilisateur d'ajouter votre application à la liste blanche d'optimisation de la batterie. Sur un Nexus 5X fonctionnant sous Android 7.1.1, c'est Paramètres> Applications> (icône engrenage)> Accès spécial> Optimisation de la batterie. Cependant, vous devez reconnaître que les utilisateurs ne peuvent pas le faire, ou ils peuvent changer d'avis et supprimer votre application de cette liste s'ils n'aiment pas la quantité de batterie utilisée par votre application. – CommonsWare