4 votos

Hacer widgets ejecutar, si no en la pantalla de inicio actual?

Tengo el EA ofertas diarias widget instalado en mi segunda pantalla de inicio. El widget es básicamente un banner rotatorio de ofertas en la Play store. Ya que está constantemente girando la muestra banner supongo que es el drenaje de la batería más de un widget estático (que además no tiene ningún tipo de opciones para la rotación o actualizaciones de la red).

Mi pregunta es, son los widgets suspendido cuando no están siendo visualizado, es decir, cuando estoy en la primera o tercera pantalla de inicio? O, ¿dependen de la implementación?

*Utilizando el stock launcher en Android 4.2.

4voto

Andy Brudtkuhl Puntos 1714

Respuesta corta

Widgets en realidad no "ejecutar" a sí mismos, como normal hacen las aplicaciones. El widget de host (es decir, la pantalla de inicio de la aplicación, o la pantalla de bloqueo) es el encargado de dibujar todos los widgets. El widget de proveedor (parte de la aplicación) indica el host en qué presentación para dar a cada widget, y con qué frecuencia desea que el widget de actualización. No hay nada ejecución para "suspender", independientemente de si el control es visible o no.

Costo de recursos

Mientras que el widget no "ejecutar", todavía tiene que ser mostrado en la pantalla. Cada widget por lo tanto hace que el proceso de host (es decir, el launcher) un poco más caro en el uso de la CPU y la memoria. Cada vez que el widget es de nuevo (siempre que cambia, o cuando la pantalla de inicio anima), lo que hace que redibujar el uso de un par de más ciclos de CPU. También, una vez que el proveedor ha dicho el host lo diseño a utilizar, el anfitrión tiene el uso de RAM para recordar el widget del diseño. Porque es el host de almacenamiento de la información y de dibujo en el widget, se tiene en cuenta para el host del uso de la batería y la memoria, no de la app. Cuánto costo depende de la acogida (es decir, que el lanzador de usar), así como en la complejidad del diseño.

Por esta razón, Android pone límites estrictos de la complejidad de cada widget del diseño, así como el tamaño total de todas las imágenes usadas en el widget. El límite depende del tamaño del pixel de la pantalla, por lo que en un es enorme. Si usted tiene un montón de widgets, todos con grandes imágenes o diseños complejos, el lanzador proceso puede tardar hasta un montón de memoria, por lo que es más propensos a ser asesinados mientras se está ejecutando una aplicación en primer plano. El efecto de esto podría ser a causa de un pequeño retraso cuando se va a la pantalla de inicio.

Servicios

Por supuesto, también es posible que un fondo de servicio para seguir dando el host (pantalla de inicio) un nuevo diseño para el widget. Esta es la forma en (digamos) un correo electrónico widget puede ser actualizado cuando usted tiene nuevos mensajes de correo electrónico. Tal servicio se ejecute si el widget aparece o no: no hay manera de que el servicio de decirle.

Por ejemplo, si usted tiene un widget de correo electrónico, el correo normal servicio se debe ejecutar a intervalos para comprobar el correo, y actualizar el widget durante el curso normal de su ejecución si hay correo nuevo. En este caso, el único costo del widget es el costo reducido dentro del huésped, debido a que el servicio se ejecuta de todas formas para sincronizar el correo electrónico en el fondo.

Tener una rotación de lista (como en tu ejemplo) no debería en sí misma hacer que usted piensa que hay un servicio siempre se ejecuta en segundo plano, por esta razón:

Listas y la rotación de banners

La interfaz del widget de los proveedores utilizan para especificar lo que el diseño debe ser que les permite dar una lista de elementos. Por ejemplo, esto podría ser una lista de mensajes de correo electrónico, o una lista de las citas del calendario, que puede desplazarse a través de. El proveedor puede tener también el hogar de rotación de pantalla a través de la lista de forma automática. El widget de YouTube utiliza, por ejemplo, para que el widget se puede seguir mostrando nuevos vídeos sin que el proveedor sin tener que cambiar el diseño. Si su widget utiliza esta instalación, a continuación, la pantalla de inicio sólo se ejecuta ningún código adicional cuando es el momento de girar la lista.

Que el costo es importante?

El recurso de costo normal de un widget (es decir, uno que no tiene un increíblemente complicado de diseño y no usar enormes mapas de bits) es muy pequeño en comparación con el costo de un servicio en segundo plano para actualizarlo con la nueva información. Para tomar su EA ofertas diarias ejemplo, usted no necesita preocuparse acerca del widget de rotación, sino más bien cómo las ofertas diarias que se actualizan. ¿El servicio que se ejecuta todo el tiempo, o cada pocos minutos; o que es lo que realmente se ejecute una vez al día para obtener las nuevas ofertas? ¿Se detiene a sí mismo si no hay conexión a internet? Va a activar el dispositivo de dormir para hacer una actualización? Estas son todas las cosas, la aplicación de la autora tuvo que programa, y que los usuarios no pueden controlar (y no necesitas saber acerca directamente), pero tienen un efecto mucho más importante en el control del costo de la nada el launcher.

TL;DR

Dibujo de widgets, incluso la rotación de los widgets, es barato: demasiado barato para medir el costo. El costo real es lo que la aplicación se ejecuta en segundo plano para actualizar el widget con los nuevos datos. Frecuencia con la que la aplicación se ejecuta depende de la aplicación, y no depende de si el widget se muestra en cualquier momento dado.

0voto

zigdon Puntos 101

En mi experiencia, los widgets sigue funcionando incluso cuando el teléfono está bloqueado, o en otra pantalla de inicio seleccionado.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X