2010-12-13 33 views
0

Quelqu'un peut-il expliquer ce que cette méthode de PowerManager.Wakelock est pour?Wakelock Référence Count

setReferenceCounted

"serrures de réveil sont comptés par référence par défaut." - Pourquoi?

+0

Il y a eu un bug qui a été déposé à cet égard ... hope ur pas le seul qui soulève cette question http://code.google.com/p/android/issues/detail?id=5958 – DeRagan

+0

Ok. Donc, pour chaque sortie que vous faites sur la serrure, vous devez l'avoir déjà obtenue pour ne pas avoir d'exception. Je peux vivre avec ça :) merci pour ce conseil. – cody

Répondre

6

Parce qu'il est vraiment utile dans bien des cas, pour qu'ils soient comptés référence.

Prenez WakefulIntentService comme exemple. J'ai besoin de faire en sorte que le service garde l'appareil suffisamment éveillé pour faire le travail qui lui est envoyé, mais une fois le travail terminé, l'appareil peut se rendormir. La façon la plus simple de le faire est d'utiliser un WakeLock compté par référence, de sorte que nous augmentons le nombre de références pour chaque travail et diminuons le nombre de références lorsque le travail est terminé. Lorsque le nombre de références atteint zéro, Android publie le WakeLock et l'appareil peut retomber endormi.

Il peut y avoir des scénarios où serait utile, bien que non-référence compté WakeLock Je n'ai pas un exemple de ce à la main.

+0

Cela répond à ma question. Merci! – cody

+0

Comment pouvons-nous incrémenter/décrémenter la valeur du compte de référence? –

+0

@PareshMayani: Il est incrémenté quand vous l'acquérez() et décrémente quand vous le libérez(). – CommonsWare