Требуется ли для потока, запущенного из сервиса с wakelock, wakelock? - PullRequest
1 голос
/ 26 января 2012

Я хочу запустить поток для выполнения некоторой работы в фоновом режиме (из службы, которая приобрела wakelock). после того как мой поток завершит работу, он остановит службу.

Мои опасения:

1- Нужно ли требовать блокировку в потоке, который был запущен в службе?

2- Может ли система уничтожить мой поток, оставив работающий сервис?

3 - если 2 имеет место, как я могу остановить свою службу (могу ли я дать службе тайм-аут, после которого она умрет)

1 Ответ

2 голосов
/ 26 января 2012
  1. WakeLocks, как я понимаю, применяется к компоненту Android (например, сервису, активности и т. Д.) И всем связанным с ним потокам.Таким образом, вам не придется приобретать новый след в вашей теме.Вы можете это доказать, передав пропущенную блокировку и вызвав isHeld из запущенного потока.

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

Обратите внимание, что здесь указано здесь : если вы удерживаете частичный пробуждение,Процессор будет продолжать работать независимо от таймеров и даже после того, как пользователь нажмет кнопку питания.Во всех других блокировках пробуждения процессор будет работать, но пользователь все равно может перевести устройство в спящий режим с помощью кнопки питания.

Редактировать: Кроме того, даже если вы можете сделать это так, как вы предлагали, возможно, будет лучшена только aquire и освободите козырек от дочерней нити для экономии заряда аккумулятора.И если вам нужно использовать WiFi для этой работы, может также потребоваться WiFiLock.

...