Introducción a los servicios en Android
Los servicios son componentes que se ejecutan en background (o segundo plano) y que no interactúan con el usuario.
La plataforma Android ofrece una gran cantidad de servicios predefinidos, disponibles regularmente a través de la clase Manager. De esta manera, en nuestras actividades podremos accesar a estos servicios a través del método getSystemService().
Por otro lado, si necesitamos utilizar servicios propios, estos deben ir declarados en el archivoAndroidManifest.xml.
Es posible declarar nuestros propios servicios que lleven a cabo operaciones de larga ejecución sin la interacción del usuario o bien para suministrar alguna funcionalidad a otras aplicaciones. Una actividad puede iniciar un servicio a través del método startService() y detenerlo con stopService(). Si la actividad quiere interactuar con el servicio podemos utilizar el método bindService(), que requiere de un objeto ServiceConnection que nos permitirá conectarnos con el servicio y que retorna un objeto IBinder, el cuál puede ser utilizado para que la actividad pueda comunicarse con el servicio.
Una vez que el servicio se ha iniciado, su método onCreate() es llamado. Posteriormente, se llama al método onStartCommand() con los datos del Intent proporcionados por la actividad. El método startService() también permite definir una bandera para determinar el comportamiento del ciclo de vida de los servicios. De esta forma, START_STICKY se utiliza para los servicios que se inician o detienen de forma explícita. Los servicios iniciados con START_NOT_STICKY se finalizan automáticamente después de que se termina de ejecutar el método onStartCommand(). Debes tomar en cuenta que un servicio se inicia en el hilo (thread) principal de la aplicación, por lo tanto, todas las tareas en tiempo de ejecución deben llevarse a cabo en segundo plano.
Como estamos hablando de servicios propios, será necesario que los registremos en el archivo AndroidManifest.xml colocando una etiqueta <service android:name=”TuClase”> dónde “TuClase” es el nombre de la clase Java que debe implementar a la clase Service o alguna de sus subclases que puedes checar en el árbol de herencia de la documentación.
Un caso común es que el servicio y la actividad que la llama estén estrechamente relacionados. Bajo este escenario, el objeto IBinder nos servirá para trabajar sobre la clase que ofrece el servicio que estemos utilizando.
La plataforma Android ofrece una gran cantidad de servicios predefinidos, disponibles regularmente a través de la clase Manager. De esta manera, en nuestras actividades podremos accesar a estos servicios a través del método getSystemService().
Por otro lado, si necesitamos utilizar servicios propios, estos deben ir declarados en el archivoAndroidManifest.xml.
Es posible declarar nuestros propios servicios que lleven a cabo operaciones de larga ejecución sin la interacción del usuario o bien para suministrar alguna funcionalidad a otras aplicaciones. Una actividad puede iniciar un servicio a través del método startService() y detenerlo con stopService(). Si la actividad quiere interactuar con el servicio podemos utilizar el método bindService(), que requiere de un objeto ServiceConnection que nos permitirá conectarnos con el servicio y que retorna un objeto IBinder, el cuál puede ser utilizado para que la actividad pueda comunicarse con el servicio.
Una vez que el servicio se ha iniciado, su método onCreate() es llamado. Posteriormente, se llama al método onStartCommand() con los datos del Intent proporcionados por la actividad. El método startService() también permite definir una bandera para determinar el comportamiento del ciclo de vida de los servicios. De esta forma, START_STICKY se utiliza para los servicios que se inician o detienen de forma explícita. Los servicios iniciados con START_NOT_STICKY se finalizan automáticamente después de que se termina de ejecutar el método onStartCommand(). Debes tomar en cuenta que un servicio se inicia en el hilo (thread) principal de la aplicación, por lo tanto, todas las tareas en tiempo de ejecución deben llevarse a cabo en segundo plano.
Como estamos hablando de servicios propios, será necesario que los registremos en el archivo AndroidManifest.xml colocando una etiqueta <service android:name=”TuClase”> dónde “TuClase” es el nombre de la clase Java que debe implementar a la clase Service o alguna de sus subclases que puedes checar en el árbol de herencia de la documentación.
Un caso común es que el servicio y la actividad que la llama estén estrechamente relacionados. Bajo este escenario, el objeto IBinder nos servirá para trabajar sobre la clase que ofrece el servicio que estemos utilizando.