2013-07-12 2 views
0

Если вы читаете мои вопросы, вы поймете, что у меня было какое-то время с этим приложением. Это приложение включает в себя push-сервис (который я написал с нуля) и облако (которое я написал с нуля.) Android сообщает, что это приложение использует 55% батареи. Я подозреваю, что это потому, что push-сервер не позволяет радио спать, потому что он всегда подключен.Слишком мало времени на использование радио

Итак, мой вопрос в том, как заставить радио спать и просыпаться, когда он получает что-то с моего сервера? Использование java.nio - это потенциальная проблема? Мне нужны асинхронные неблокирующие возможности. Я также не хочу использовать службу облачных сообщений Google.

Спецификации: - Я использую один разъем в любое время, который всегда подключен. - клиент не посылает импульсы (нет, что я писал, во всяком случае, NiO может сделать это сам по себе) - сервер посылает только вещи, когда это необходимо (он использует NiO, а)

Благодарим Вас за любую помощь, которую вы можете предоставить!

Редактировать: Радио, которое я использую, зависит от того, какое подключение к Интернету доступно. НАПРИМЕР. если пользователь имеет Wi-Fi и Android подключается к сети, он будет использовать WiFi.

+0

Любой, кто хочет перевернуть свою собственную платформу push, лучше инвестировать в тестовое устройство Qualcomm MDP, чтобы использовать Trepn и более точно определить, откуда идет утечка энергии, а не принимать случайные догадки. Вы также должны рассмотреть возможность обновления своего вопроса, чтобы конкретно указать, какое радио вы пытаетесь использовать (WiFi? GSM/CDMA? Что-то еще?). Кроме того, просмотрите видеоконференции 2010 года на конференции C2DM, где они обсуждают биение, которое они использовали для C2DM (которое позже превратилось в GCM), так как я буду удивлен, если вы сможете прокрутить надежную платформу push sans heartbeat. – CommonsWare

+0

http://stackoverflow.com/a/6432021/1461223 Что я здесь делаю неправильно? Я понимаю, что есть еще что-то, но почему бы и нет C2DM, чтобы разрядить аккумулятор, как у меня. Я бы не назвал это случайным догадком, я бы назвал это довольно вероятной оценкой, основанной на неделе тестирования и отладки. Это был единственный компонент, который истощал батарею, а не другие. –

+0

«Я бы не назвал это случайным предположением» - на основе вашего «55%» фигуры, предположительно, вы используете экран батареи в настройках в качестве измерительной палочки. Google признает, что у них нет достойного способа фактического измерения потребления батареи, и поэтому то, что они записывают для этого экрана, является догадкой. Купите MDP и используйте Trepn. – CommonsWare

ответ

0

Я понял! Я нашел, где потребление батареи было через маркировку сокетов и комментирование потенциально истощающих поведения. Я делаю некоторые большие оптимизации клиентов, и огромная утечка ушла. Это было главным образом утечка процессора из-за постоянного чтения из сокета, когда это не должно было быть.

Смежные вопросы