Cuando se trata del impacto en la duración de la batería, no todos los tipos de conexión se crean de la misma manera. La radio Wi-Fi no solo consume mucho menos batería que sus equivalentes de radio inalámbrica, sino que las que se usan en las distintas tecnologías de radio inalámbrica tienen diferentes consecuencias en la batería.
Cómo usar Wi-Fi
En la mayoría de los casos, una radio Wi-Fi ofrecerá un mayor ancho de banda a un costo de batería mucho menor. Por lo tanto, siempre que sea posible, realiza transferencias de datos cuando estés conectado mediante Wi-Fi.
Puedes utilizar un receptor de emisión para escuchar los cambios de conectividad que se indican cuando se establece una conexión Wi-Fi con el fin de ejecutar descargas importantes, interrumpir actualizaciones programadas y posiblemente aumentar de forma temporal la frecuencia de las actualizaciones regulares, como se describe en la lección Cómo determinar el estado de conectividad y el tipo de conexión.
Cómo usar mayor ancho de banda para descargar más datos con menos frecuencia
Generalmente, en una conexión mediante una radio inalámbrica, cuanto mayor es el ancho de banda mayor es el uso de la batería. Esto significa que, por lo general, LTE consume más energía que 3G, lo que a su vez es más costoso que 2G.
Por lo tanto, mientras la máquina de estado de radio subyacente varía según la tecnología, en general, el impacto relativo en la batería del tiempo de cola de cambio de estado es mayor para radios que tienen un ancho de banda superior.
Al mismo tiempo, un mayor ancho de banda significa que puedes hacer precargas de forma más activa, y descargar más datos a la vez. Quizás de manera menos intuitiva, debido a que el costo de la batería del tiempo de cola es relativamente más alto, también es más eficiente mantener la radio activa durante períodos más largos en cada sesión de transferencia con el fin de reducir la frecuencia de las actualizaciones.
Por ejemplo, si una radio LTE tiene el doble de ancho de banda y costo de energía que 3G, deberás descargar 4 veces más datos durante cada sesión, o hasta 10 MB. Cuando descargas esa cantidad de datos, es importante tener en cuenta el efecto de la precarga en el almacenamiento local disponible y vaciar la caché de precarga de forma regular.
Puedes usar el administrador de conectividad para determinar la radio inalámbrica activa y modificar las rutinas de precarga en consecuencia:
Kotlin
val cm = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val tm = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager val activeNetwork: NetworkInfo? = cm.activeNetworkInfo val prefetchCacheSize: Int = when (activeNetwork?.type) { ConnectivityManager.TYPE_WIFI -> MAX_PREFETCH_CACHE ConnectivityManager.TYPE_MOBILE -> { when (tm.networkType) { TelephonyManager.NETWORK_TYPE_LTE or TelephonyManager.NETWORK_TYPE_HSPAP -> DEFAULT_PREFETCH_CACHE * 4 TelephonyManager.NETWORK_TYPE_EDGE or TelephonyManager.NETWORK_TYPE_GPRS -> DEFAULT_PREFETCH_CACHE / 2 else -> DEFAULT_PREFETCH_CACHE } } else -> DEFAULT_PREFETCH_CACHE }
Java
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; }