мое приложение постоянно получает обновления местоположения и обновления распознавания активности и время от времени отправляет одним пакетом все собранные записи активности и местоположения на сервер.
Я знаю, что каждый раз, когда я выполняю сетевые операции - состояние радиосвязи WIFI или мобильного телефона (зависит от того, какое текущее активное соединение) переходит в активное состояние и некоторое время остается в режиме ожидания - что может резко повлиять на использование батареи, когда выполнять частые сетевые запросы, поэтому я планирую будильник для выполнения синхронизации с сервером только один раз в 2 часа или когда пользователь явно использует мое приложение.
с другой стороны, мы хотели бы синхронизировать собранные данные с сервером через гораздо более короткие промежутки времени, если это возможно.
Я подумал, что если бы я мог знать, когда состояние радио становится активным по какой-либо причине (например, когда другое приложение выполняет сетевую операцию) - это был бы хороший шанс выполнить мою синхронизацию, чтобы воспользоваться тем фактом, что радио в любом случае открыто или в режиме ожидания и потребляет больше энергии.
мои вопросы:
- можно ли обнаружить это состояние радио, как я описал?
- если да, то как? и как вы думаете, это хорошая идея сделать это?
Я ожидал, что новый JobScheduler
, представленный в Android 5.0, будет поддерживать планирование заданий, когда сетевое радио активно, но, похоже, это не так в соответствии с API. Я считаю, что он будет объединять все задания, требующие сети, одновременно, но это будет хорошо только в идеальном мире, когда все приложения на устройстве будут использовать его с умом.