J'ai une question sur le wakelock. Dans les cas montrés ci-dessous, est-ce que le système d'exploitation Android libère le wakelock ( PARTIAL_WAKE_LOCK
si vous devez le spécifier) pour éviter que le wakelock soit laissé acquis et gaspille la batterie jusqu'à la mise hors tension (pas en veille).
Cas 1-a :
L'application a acquis un wakelock (sans option de timeout) dans l'un de ses threads (veuillez penser que c'est raisonnable dans ce cas) et elle a été conçue pour libérer le wakelock lorsque la tâche critique est terminée. L'application peut être tuée par le taskmanager ou un taskkiller notoire, et l'application n'a aucune chance de laisser son thread libérer le wakelock. Qu'arrive-t-il à ce wakelock ?
Cas 1-b :
(Si la réponse au cas 1-a est "Oui, ne vous inquiétez pas", alors veuillez ignorer ce cas). Identique au cas 1-a mais l'application a donné une option de délai d'attente pour le wakelock, disons 3 secondes. Cette option de délai d'attente reste-t-elle valide ?
Cas 2-a :
Imaginez qu'un service a été lancé par AlarmManager (via un récepteur de diffusion) et que ce service a acquis un wakelock (sans option de temporisation). Ce service est conçu pour que le temps d'acquisition du wakelock soit minimal. Mais malheureusement, Android OS a choisi de tuer ce service à cause d'un manque de mémoire. (Je ne sais pas si le système d'exploitation ne tue pas le service lorsque le wakelock est acquis, mais je suppose qu'il s'en moque. Mais j'espère qu'OS libérera wakelock plus tard). Qu'arrive-t-il à ce wakelock ?
Cas 2-b :
(Si la réponse au cas 2-a est "Oui, ne vous inquiétez pas", alors veuillez ignorer ce cas). Identique au cas 2-a mais le service a donné une option de délai d'attente pour le wakelock, disons 3 secondes. Cette option de délai d'attente reste-t-elle valide ?