Изменение шаблонов загрузки в зависимости от типа подключения

Когда дело доходит до влияния на время работы от батареи, не все типы созданных подключений равны. Мало того, что частота используемая для Wi-Fi потребляет значительно меньше энергии, чем другие беспроводные сети, а так же частоты, используемые различными технологиями беспроводных сетей, оказывают различное влияние на разряд батареи.

Использование Wi-Fi

В большинстве случаев Wi-Fi сеть предоставляет более широкую полосу пропускания при значительно более низком потреблении энергии батареи. В результате, вы должны стремиться выполнить передачу данных при подключении через Wi-Fi, когда это возможно.

Вы можете использовать широковещательный обработчик событий для прослушивания изменений подключения, которые информируют, когда установлено Wi-Fi соединение, и инициирования выполнения значительных загрузок, обновление по расписанию, и, возможно, даже временно увеличить частоту регулярных обновлений, как описано в Оптимизация работы батареи урок Определение и мониторинг состояния подключения.

Загружайте больше данных, но реже

При подключении к беспроводной сети, высокая пропускная способность обычно имеет более высокое энергопотребление. Это означает, что LTE обычно потребляет больше энергии, чем 3G, который в свою очередь потребляет больше, чем 2G.

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

В то же время, чем выше пропускная способность, тем более агрессивно можно выполнить предварительную выборку, загрузить больше данных за то же время. Возможно это менее интуитивно, но так как время на переход в режим ожидания и соответствующее использование батареи относительно выше, поэтому также более эффективно держать сеть активной в течение более длительных периодов, для каждой сессии передачи данных, чтобы уменьшить частоту обновлений.

Например, если LTE сеть имеет вдвое большую пропускную способность и двойные затраты энергии по сравнению с 3G, то вы должны загрузить в 4 раза больше данных во время каждой сессии — или потенциально около 10 Мб. При загрузке большого количества данных, важно учитывать влияние вашей предварительной выборки на имеющейся количество локальной памяти, и регулярно очищать кэш предварительной выборки.

Вы можете использовать менеджер подключения, чтобы определить активную беспроводную сеть, и изменить свои алгоритмы предварительной выборкой соответственно:

ConnectivityManager cm =
 (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

TelephonyManager tm =
  (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
  
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 
int PrefetchCacheSize = DEFAULT_PREFETCH_CACHE;
 
switch (activeNetwork.getType()) {
  case (ConnectivityManager.TYPE_WIFI): 
    PrefetchCacheSize = MAX_PREFETCH_CACHE; break;
  case (ConnectivityManager.TYPE_MOBILE): {
    switch (tm.getNetworkType()) {
      case (TelephonyManager.NETWORK_TYPE_LTE | 
            TelephonyManager.NETWORK_TYPE_HSPAP): 
        PrefetchCacheSize *= 4;
        break;
      case (TelephonyManager.NETWORK_TYPE_EDGE | 
            TelephonyManager.NETWORK_TYPE_GPRS): 
        PrefetchCacheSize /= 2;
        break;
      default: break;
    }
    break;
  }
  default: break;
}