Las aplicaciones headless son aplicaciones que corren en segundo plano sin interfaz de usuario. Pueden ser de corta o larga duración y son disparadas por eventos como mensajes o cambios de ubicación. Se componen de una parte UI y otra headless que se comunican mediante invocación o sockets. Las headless usan notificaciones para informar al usuario y solo pueden usar recursos limitados para no afectar el rendimiento del dispositivo.
2. Joel Ortíz
BlackBerry Elite Member &
Community Manager
Adobe Certified Instructor,
Expert & Adobe Community
Manager
Active BlackBerry Alliance
Partner
StarWars FanBoy
2
3. ¿Qué es una Headless App?
Es una aplicación que corre por detrás
sobre el OS BlackBerry 10.
A diferencia las aplicaciones
convencionales con una UI y un Active
Frame asociado, las Headless App no
están bajo el control directo de un
usuario.
3
4. Tipos de Headless App
Short-running Apps: este tipo de aplicaciones no requiere estar
corriendo todo el tiempo, comúnmente son disparadas por un
evento durante corto tiempo. Estas aplicaciones pueden ser
por ejemplo: notificaciones push, receptores de mensajes
SMS, downloaders (para suscripciones de podcasts o revistas)
o trackers de localización.
Long-running Apps: este tipo de aplicaciones comúnmente
corren por un periodo largo de tiempo para monitorear cierta
actividad en el dispositivo como podrían ser clientes de
mensajería instantánea, loggers de actividad, etc.
4
5. ¿Cómo funcionan?
Ambos tipos de Headless App usan disparadores de eventos
(triggers). Un trigger es simplemente un evento que ejecuta la
aplicación. Como mencionamos anteriormente este evento
podrías ser un mensaje SMS, un cambio de ubicación, etc.
Una vez disparada la Headless App puede funcionar como una
aplicación short-running o long-running dependiendo la tarea
que se desee realizar para controlar el evento.
5
6. ¿Cómo se crean?
Solo se requieren de dos partes:
UI
Headless
Modificar los puntos de entrada
Solicitar permiso del usuario
Usar Invocation Framework para habilitar que la aplicación sea
disparada cuando el evento ocurre.
6
9. Ciclo de vida
Las Headless App pueden ser iniciadas o detenidas basandose
en la disponibilidad de los recursos. Si el dispositivo BlackBerry
10 esta agotando los recursos del sistema como la batería o
RAM, la aplicación recibe un mensaje de stop y da tiempo para
guardar su estado y cerrarse.
Cuando se están agotando los recursos del dispositivo, se
detienen los procesos dependiendo de su importancia. Los
procesos críticos son considerados los más importantes y
procesos de detenido son los menos importantes para el
usuario.
9
10. Niveles de importancia
Critical: procesos que deben ejecutarse en todo momento
(procesos del sistema)
Foreground: procesos que corren en primer plano
Background: procesos que corren de fondo
Stop: procesos que se cargan a la RAM
10
12. Niveles de importancia
Por default, las Headless App pueden ocupar solo 3 MB de
memoria. Este limite solo aplica para la parte Headless de la
aplicación, la parte de interfaz de usuario puede ocupar más de
3 MB de memoria. Esta cantidad de memoria debe ser
suficiente para la mayoría de Headless App porque la parte
Headless no incluye activos.
El CPU que se asigna a una Headless App es entre 7% y un
25% cuando se ejecuta en segundo plano. Algo importante
acerca de la asignación de CPU es que la parte de Headless
recibe una cantidad limitada de tiempo en comparación con
una aplicación normal.
Operaciones o cálculos de larga duración no deben ser
realizados en la parte Headless.
12
13. Performance y batería
Las Headless App deben funcionar durante poco tiempo como
sea posible para minimizar el consumo de batería y optimizar
el rendimiento del dispositivo.
Por default la duración cada vez que se invoca (activa) tiene
una duración de 20 segundos, sin embargo por medio de
permisos adicionales (_sys_headless_nostop) puede ampliarse
ese tiempo de duración inclusive determinarlo como indefinido.
13
15. Notification service
Cuando una Headless App requiere informar de un evento
disparado al usuario dependiendo la configuración, la
aplicación pueden enviar una notificación.
Debido a que no pueden tener UIs asociadas en primer plano
de forma directa, las Headless App usan el Notification Service
para realizar esas notificaciones.
Reproducir audio, vibración del dispositivo, notificaciones en
BlackBerry HUB y previsualizaciones instantáneas son parte
de los tipos de notificaciones que se pueden emplear.
15
18. Interprocess Comunication Technique
Se puede emplear ICT para comunicar las partes Headless con
la parte UI de su aplicación.
Invocation Framework
Local Sockets (comunicación en tiempo real)
QSettings and file monitoring (comunicación persistente)
Se puede emplear una de las técnicas anteriores o
combinarlas según la necesidad de su aplicación
18
20. Cerrando la aplicación
El usuario puede cerrar una Headless App desde:
Settings -> App Manager -> Device Monitor -> {name app} -> CPU -> Stop
Siempre hay que considerar que las Headless App se pueden
ejecutar por default por un tiempo de 20 segundos, por lo que
podemos detener la aplicación antes de haber culminado el
tiempo.
La parte de UI puede consultar para determinar si se esta
ejecutanto la parte Headless y enviar una Signal para indicar
que se debe cerrar la parte Headless.
Para aplicaciones Long-running debe considerarse a
conciencia para ahorrar bateria o CPU
20
21. Gracias por su atención
¿Preguntas?
@flashinstructor
joelortiz@blackberrydeveloper.mx