J'ai un service qui devrait être exécuté en arrière-plan. Il démarre lorsque mon application est ouverte et se termine chaque fois que mon application est désactivée par l'utilisateur.WakeLock a été finalisé alors que je l'ai libéré même si je le relâche
Chaque fois que mon application est en arrière-plan ou lorsque l'écran est éteint, le service doit toujours être activé.
J'ai atteint ce avec un WakeLock, mais pour une raison quelconque, je reçois l'erreur dans le titre. Ceci est préoccupant parce que je pourrais être la fuite de la mémoire WakeLock (si je comprends bien).
Je suis capable de déclencher l'erreur en redémarrant mon application.
Voici le code correspondant:
public class SomeService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
PowerManager manager = (PowerManager) getSystemService(POWER_SERVICE);
mWakeLock = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "TAG");
if (!mWakeLock.isHeld()) mWakeLock.acquire();
//Handle other processing
return START_STICKY;
}
@Override
public void onDestroy() {
if (mWakeLock.isHeld()) mWakeLock.release();
super.onDestroy();
}
}
Je suis perplexe parce que dans mon onDestroy()
je libère le WakeLock. Je ne suis pas sûr de ce qui déclenche l'erreur.
Je suis également confronté au même problème. Donc, vous avez trouvé une solution? –
Avez-vous essayé de déplacer la création du verrou vers 'onCreate()'? – iosdude
@iosdude J'ai essayé, mais c'est la même chose. – Pitel