Об этом есть тема в Руководстве для разработчиков Android. Я бы порекомендовал вам взглянуть на примеры кода на странице.
Это то, что они упоминают в отношении экономии заряда батареи и различных параметров.
Настройка модели для экономии батареи и обмена данными
При тестировании приложения вы можете обнаружить, что ваша модель для обеспечения хорошего местоположения и хорошей производительности нуждается в некоторой корректировке. Вот некоторые вещи, которые вы могли бы изменить, чтобы найти хороший баланс между ними. Уменьшить размер окна
Меньшее окно, в котором вы прослушиваете обновления местоположения, означает меньшее взаимодействие с GPS и сетевыми службами определения местоположения, что позволяет экономить заряд батареи. Но это также позволяет использовать меньше местоположений, из которых можно выбрать наилучшую оценку. Настройте провайдеров местоположения так, чтобы они возвращали обновления реже
Уменьшение частоты появления новых обновлений в течение окна также может повысить эффективность работы батареи, но за счет точности. Ценность компромисса зависит от того, как используется ваше приложение. Вы можете уменьшить частоту обновлений, увеличив параметры в requestLocationUpdates(), которые определяют интервал времени и изменение минимального расстояния. Ограничить набор поставщиков
В зависимости от среды, в которой используется ваше приложение, или от желаемого уровня точности вы можете использовать только поставщика сетевого расположения или только GPS вместо того и другого. Взаимодействие только с одной из служб снижает расход заряда батареи за счет снижения точности.
По сути, рассмотрите возможность уменьшения частоты запрашиваемых вами обновлений или продолжительности их запроса. Это как гольф, чем меньше мест вы запрашиваете, тем лучше. Рассмотрим следующий вариант использования: ![Пример тегирования контента на основе местоположения](https://i.stack.imgur.com/kXW8h.png)
В этом примере приложение ждет, пока пользователь выполнит действие, требующее определения местоположения, а затем прекращает опрос, как только данные о местоположении больше не нужны.
В то время как постоянный опрос позволит приложению иметь готовое местоположение в момент уведомления, это просто не стоит потраченных впустую ресурсов, чтобы уменьшить задержку при запросе местоположения, вы можете использовать getLastKnownLocation (String provider)
.
Изменить. Существует способ определить энергопотребление для различных LocationProviders!
Вызов getPowerRequirement ()
для LocationProvider вызовет возвращает одну из трех констант.
int POWER_HIGH A constant indicating a high power requirement.
int POWER_LOW A constant indicating a low power requirement.
int POWER_MEDIUM A constant indicating a medium power requirement.
Чтобы сделать ваш код более читабельным, изучите использование meetsCriteria (Criteria criteria)
в любых логических проверках, чтобы сделать ваш код более читабельным.
Я бы использовал это, чтобы определить, какой метод ваше приложение должно использовать для наименьшей стоимости энергии. Кроме того, у вас есть преимущество поддержки устройств, которые имеют разные требования к мощности для поставщиков.
person
Devin M
schedule
20.01.2012