Я пишу долгосрочную фоновую службу, которая собирает и анализирует данные устройства. Для этого я запускаю службу, служба порождает поток, и поток выполняет сбор/анализ данных.
Из моего чтения я узнал, что если я хочу, чтобы служба выполняла свою работу, пока экран заблокирован / устройство спит, я должен использовать частичную блокировку пробуждения, чтобы гарантировать, что процессор не переходит в спящий режим, пока работает поток службы. . Однако я действительно запутался в этом, потому что в настоящее время я не использую wakelock и могу запустить свое приложение в фоновом режиме, заблокировать экран или убить приложение через диспетчер задач, и каждый раз, когда я это делаю, я могу наблюдать через logcat и Утверждения журнала о том, что поток, который я породил в службе, все еще работает и выполняет работу, которую я хочу.
Я даже запустил dumpsys power оболочки adb и обнаружил, что у меня есть refcount = 0 для wakelocks, что указывает мне на то, что другое приложение не удерживает wakelock для меня.
Мне просто повезло, что мой сервис работает нормально в фоновом режиме без wakelock?
Изменить: устройство продемонстрировало такое поведение при подключении к USB и при отключении от USB. Я периодически загружаю данные, которые я собираю, на сервер и запускаю тесты, в которых я никогда не подключаю устройство и блокирую экран на протяжении всего теста, и я все еще вижу, что мой поток работает и данные загружаются.