Bonjour,
Je développe une application pour Android qui utilise les sockets pour communiquer régulièrement avec un serveur. Le socket est stocké dans une variable static.
L'application fonctionne correctement tant que le téléphone est utilisé mais lorsque le téléphone est en veille, l'application perd la connexion après quelques minutes (environ 5).
Il faut alors rallumer l'écran pour que l'application se reconnecte.
Le problème se produit aussi bien avec le wifi qu'avec les données mobiles mais il ne semble pas se produire lorsque le téléphone est connecté en débogage à l'ordinateur (Android Studio).
J'ai essayé de mettre en place un WifiLock et un WakeLock :
(sans oublier d'ajouter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock"); wakeLock.acquire(); WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE); wifiLock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL, "MyWifiLock"); wifiLock.acquire();au fichier AndroidManifest.xml).
Code : Sélectionner tout - Visualiser dans une fenêtre à part <uses-permission android:name="android.permission.WAKE_LOCK" />
J'ai également essayé d'exécuter un IntentService qui se charge de la communication avec le serveur.
Mais le problème persiste et je suis à court d'idées pour y remédier.
Je précise que l'application continue à fonctionner lorsque le téléphone est en veille, puisqu'elle m'avertit de la perte de connexion grâce à un signal sonore préalablement défini ; le seul ennui est ladite perte de connexion à Internet.
Sauriez-vous comment éviter que l'application ne se déconnecte lorsque le téléphone est en veille ?
Cordialement,
E__Man.
Partager