Описание проблемы:
В приложении для Android возникают проблемы с подключением при удаленном HTTP
("опрос") вызов от AsyncTask, который был запущен после того, как сработала сигнализация.
Поиск работает очень хорошо, когда стандартная настройка Android "Включить всегда включен
мобильные данные " (Настройки -> Беспроводные сети -> Мобильные сети) включен
до «вкл» .
Решение, которое работает: тревога исчезает, Android «Сервис» получает сигнал тревоги,
запускает фоновый поток (AsyncTask). Новый поток приобретает частичное след
блокировка, устанавливает соединение (опрос), уведомляет пользователя и освобождает
звонок для пробуждения.
Пока все хорошо. Проблема в том, что когда всегда включен выключен "выключен" , опрос в большинстве случаев завершается неудачно, если
телефон находился в режиме ожидания некоторое время (> 30 минут).
Поскольку поток опроса отправляет уведомление, я напрямую получаю отзыв о
неудачная попытка опроса.
Мотивация:
Многие пользователи включают режим «всегда включен», чтобы уменьшить разрядку аккумулятора. Так что, скорее всего,
что пользователи приложения сталкиваются с проблемами. Я хочу устранить или предотвратить «ошибки», с которыми столкнутся пользователи.
Попытки решения:
Я много экспериментировал без каких-либо серьезных прорывов:
- несколько повторных попыток и промежуточных снов, чтобы дать телефону некоторое время для установления соединения
- http-параметры (время ожидания и т. Д.)
- другой HttpClient (Apache)
Вопросы:
- Что именно точно означает настройку «всегда включен» и что должны учитывать разработчики?
- Мне интересно, возможно ли обычно реализовать механизм опроса на основе аварийных сигналов , который может устанавливать соединение для передачи данных, даже если "всегда включен"
выключен.
- Существуют ли альтернативные решения (C2DM невозможен)?
Обновление:
Кажется, что не все устройства Android имеют настройку "всегда включен". Похоже, это устройство или, что более вероятно, зависит от поставщика.