Pregunta

Tengo un servicio IDL de mayúsculas y minúsculas que estoy usando de 2 maneras:

  1. El servicio generará un hilo y hará una llamada de red para obtener contenido XML en nombre de Activity. El contenido se devuelve a la Actividad a través del IDL del cliente que define los métodos de devolución de llamada
  2. Si el usuario elige la opción de notificación, el servicio crea un temporizador que se ejecuta repetidamente y crea una notificación en la barra de herramientas. También almacenó en caché el contenido, por lo que cuando Activity solicita una actualización, se sirve desde el caché en lugar de otra llamada de red

Entonces mis preguntas son

  1. Para el escenario n. ° 1, ¿cuál es el precio (si corresponde) que estoy pagando por usar el servicio para llamadas de red en lugar de crear un hilo de fondo directamente en la Actividad?
  2. Para el n. ° 2: ¿es mejor cambiar la implementación a AlarmManager? Me di cuenta de que cuando elimino los procesos con TasKiller, mi servicio muere y nunca se reinicia, ¿el trabajo basado en AlarmManager tendría más posibilidades de recuperación?
¿Fue útil?

Solución

  

Para el escenario # 1, cuál es el precio (si   cualquiera) Estoy pagando por usar el servicio para   llamadas de red en lugar de crear   hilo de fondo directamente en el   Actividad?

Supongo que, dado que usted dijo que este es un "servicio IDL", que esto es lo que yo llamo un servicio remoto: está utilizando AIDL para definir una interfaz que se está utilizando a través de los límites del proceso.

En ese caso, el costo es de varios MB de RAM para el segundo proceso, más un poco de tiempo de CPU para la sobrecarga de IPC. ¿Cuánto ese "bit de tiempo de CPU"? depende de con qué frecuencia se le llame.

  

Para el n. ° 2: ¿me conviene cambiar?   implementación a AlarmManager?

Generalmente, sí. Idealmente, los servicios están en la memoria lo menos posible.

  

Noté que cuando mato procesos   con TasKiller mi servicio muere y   nunca se reinicia, lo haría   El trabajo de AlarmManager-base tiene mejor   ¿posibilidad de recuperación?

No, porque '' asesino de tareas '' las aplicaciones tienden a abusar de una API (en palabras de Dianne Hackborn) que matará todo, incluidas las alarmas programadas. En la actualidad, no existe un & amp; confiable defensa eficiente contra `` asesinos de tareas '' que yo sepa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top