Работа с режимом Android-Doze в моем приложении мониторинга BLE во время сна пользователя
Я сделал устройство, которое контролирует здоровье человека во время сна и подключается к смартфону через BLE.
Он прекрасно работает с приложением iOS. Но так как режим Doze появился в мире Android. С этим действительно трудно иметь дело, потому что мое устройство работает во время сна.
Основная особенность заключается в том, что он обнаруживает особую опасность и уведомляет пользователя, пока он спит с устройством. Мне нужно подключение к сети, когда это происходит.
Многие статьи говорят мне, что я могу использовать сеть даже в режиме ожидания, если мое приложение находится в белом списке. Но это не похоже на правду после того, как я протестировал режим Doze. Я прав?
Я могу убедиться, что я могу найти свое приложение в списках, когда я запускаю
adb shell dumpsys deviceidle
Каков наилучший подход для правильной работы моего приложения?
- услуги переднего плана
- менеджер аварийных сигналов с SetExactAndAllowWhileIdle.
- GCM (это означает толчок, верно?)
- что-нибудь еще
Любые советы помогут мне. Благодарю.
редактировать
К сожалению, я тестировал с использованием GCM, но это только разбудило мое приложение за короткое время. Это означает, что я должен отправить GCM столько, сколько я хочу, чтобы он не спал. Я не думаю, что смогу это использовать.
1 ответ
Многие статьи говорят мне, что я могу использовать сеть даже в режиме ожидания, если мое приложение находится в белом списке. Но это не похоже на правду после того, как я протестировал режим Doze. Я прав?
Ты не прав. Одно из ограничений режима doze, которое снимается, когда ваше приложение находится в белом списке, - это возможность использовать сеть, когда режим doze активен.
Приложение, занесенное в белый список, может использовать сеть и частично блокировать пробуждение во время Doze и App Standby. Однако к приложению, внесенному в белый список, по-прежнему применяются другие ограничения, как и к другим приложениям. Например, задания и синхронизации приложения из белого списка откладываются (на уровне API 23 и ниже), а его обычные тревоги AlarmManager не запускаются.
Другими словами: вы должны иметь возможность использовать сеть в режиме ожидания, если вы находитесь в белом списке.
Каков наилучший подход для правильной работы моего приложения?
Учитывая, что ваше приложение является монитором работоспособности и, следовательно, должно иметь возможность выполнять свою работу постоянно или, по крайней мере, очень регулярно, вы могли бы поместить эту функциональность в приоритетную службу. Передовые услуги не влияют на дозу.
Вы должны знать, что у вас должна быть веская причина для использования службы переднего плана, поскольку пользователь знает о них, но я думаю, что у вас есть одна с мониторингом работоспособности и т. Д.
Примечание. Службу переднего плана следует использовать только для задач, которые, как ожидает пользователь, будут выполняться системой немедленно или без прерывания. К таким случаям относится загрузка фотографии в социальные сети или воспроизведение музыки, даже если приложение музыкального проигрывателя находится не на переднем плане. Не следует запускать службу переднего плана просто для того, чтобы система не могла определить, что ваше приложение бездействует.