wwwww
Un servicio es un componente de aplicación que puede realizar operaciones de larga duración en el fondo y no proporciona una interfaz de usuario. Otro componente de aplicación puede iniciar un servicio y continuará funcionando en segundo plano, incluso si el usuario cambia a otra aplicación. Además, un componente puede unirse a un servicio para interactuar con él e incluso realizar lacomunicación entre procesos (IPC). Por ejemplo, un servicio puede manejar las transacciones de red, reproducir música, realizar operaciones con archivos I / O, o interactuar con un proveedor de contenido, todo desde el fondo.
Un servicio puede esencialmente de dos tipos:
Iniciado
Un servicio es "Iniciado" cuando un componente de la aplicación (por ejemplo, una actividad) que se iniciallamandoStartService () . Una vez iniciado, un servicio puede ejecutarse en el fondo indefinidamente, incluso si el componente que comenzó se destruye. Por lo general, un servicio iniciado realiza una sola operación y no devuelve un resultado al llamador. Por ejemplo, puede descargar o cargar un archivo en la red. Cuando la operación se lleva a cabo, el servicio debe detenerse.
Obligado
Un servicio es"obligada" cuando un componente de aplicación se une a ella llamando bindService () . Un servicio de encuadernado ofrece una interfaz de cliente-servidor que permite que los componentes interactúan con el servicio, enviar solicitudes, obtener resultados, e incluso hacerlo a través de los procesos de comunicación entre procesos (IPC).Un servicio de la envolvente sólo se ejecuta siempre que otrocomponente de la aplicación está ligada a ella. Componentes múltiples se pueden enlazar con el servicio de inmediato, pero cuando todos ellos desatar, el servicio se destruye.
Esta documentación generalmente se analizan estos dos tipos de servicios por separado, su servicio puede funcionar en ambos sentidos, se puede iniciar (ejecutar indefinidamente) y también permitir la unión. Es simplemente unacuestión de si se implementa un par de métodos de devolución de llamada: onStartCommand ()para permitir que los componentes para iniciarlo y onBind () para permitir la unión.
Independientemente de si la aplicación se inicia, con destino, o ambos, cualquier componente de la aplicación puede utilizar el servicio (incluso desde una aplicación independiente), de la misma manera que cualquiercomponente puede utilizar una actividad-arrancando con una Intención . Sin embargo, se puede declarar el servicio como privado, en el archivo de manifiesto, y bloquear el acceso desde otras aplicaciones. Esto se discute más en la sección sobre Declarar el servicio en el manifiesto .
Precaución: Un servicio se ejecuta en el hilo principal de su proceso de alojamiento, el servicio es no crear su propio hiloy que no se ejecutan en un proceso separado (a menos que se especifique lo contrario). Esto significa que, si el servicio se va a hacer ningún trabajo intensivo de la CPU o de operaciones de bloqueo (como la reproducción de MP3 o en red), debe crear un nuevo hilo en el servicio para hacer ese trabajo. Mediante el uso de un hilo separado, se reducirá el riesgo de que la aplicación no responde(ANR) errores e hilo principal de la aplicación puede seguir siendo dedicado a la interacción del usuario con sus actividades.
Los fundamentos
Para crear un servicio, debe crear una subclase de servicio (o una de sus subclases existentes). En su implementación, es necesario reemplazar algunos métodos de devolución de llamada que se encargan de los aspectos clave del ciclo de vida del servicio yproporcionar un mecanismo de componentes para enlazar con el servicio, si procede. Los métodos de devolución de llamada más importantes que deben prevalecer son los siguientes:
onStartCommand ()
El sistema llama a este método cuando otro componente, como una actividad, pide que el servicio se inicie, llamandoStartService () . Una vez que este método se ejecuta, el servicio se inicia y puede...
Regístrate para leer el documento completo.