2010-12-13 4 views
0

Может кто-нибудь объяснить, для чего этот метод PowerManager.Wakelock?Wakelock Номер ссылки

setReferenceCounted

"Услуга блокировки подсчет ссылок по умолчанию." - Зачем?

+0

В этом отношении была обнаружена ошибка ... Надежда ур не единственная, кто поднимает этот вопрос http://code.google.com/p/android/issues/detail?id=5958 – DeRagan

+0

Хорошо. Поэтому для каждого выпуска, который вы делаете на замке, вы должны были получить его раньше, чтобы не получить исключения. Я могу жить с этим :) спасибо за этот совет. – cody

ответ

6

Потому что во многих случаях очень удобно использовать их для подсчета ссылок.

Взять WakefulIntentService в качестве примера. Мне нужно организовать услугу, чтобы устройство просыпалось достаточно долго, чтобы выполнять любую работу, но, как только работа будет завершена, устройство может засыпать. Самый простой способ сделать это - использовать подсчет WakeLock, поэтому мы набираем количество ссылок для каждой части работы и уменьшаем счетчик ссылок, когда работа выполнена. Когда количество ссылок достигает нуля, Android выпускает WakeLock, и устройство может засыпать.

Возможны сценарии, в которых полезно использовать не ссылочный WakeLock, хотя у меня нет примера этого в готовом виде.

+0

Это отвечает на мой вопрос. Благодаря! – cody

+0

Как мы можем увеличивать/уменьшать значение счетчика ссылок? –

+0

@PareshMayani: он увеличивается, когда вы 'приобретаете()' it и декрементируете, когда вы 'release()' it. – CommonsWare