Generalidades

Tutorial de servicio de Android con ejemplos

¡Hey! Chico! En mi artículo de hoy, explicaré los servicios en Android.

Los servicios son uno de los componentes clave de la aplicación que pueden realizar operaciones de larga duración en segundo plano. Es posible que continúe ejecutándose durante un tiempo o incluso que el usuario esté trabajando en otra aplicación. Además, el componente principal de Android puede vincularse al servicio para interactuar con él, y también puede comunicarse entre procesos.

Como mencioné antes, los desarrolladores deben usar servicios para manejar operaciones de larga duración, como procesar transacciones de red, reproducir música, realizar E / S de archivos o interactuar con proveedores de contenido, todo lo cual proviene del fondo.

¡evitar! SegundoelectrónicoEl servicio se ejecuta El hilo principal del proceso gestionado, No crea su propio hilo, Por lo que los desarrolladores deben ejecutar cualquier operación de bloqueo En un hilo separado (gestione usted mismo) para evitar La aplicación no responde (ANR) Error.

Estos son tres tipos diferentes de servicios:

Tipo de servicio de Android

1- Cliente potencial:

Tipos de servicios que realizan operaciones en segundo plano Es obvio para el usuario. Este tipo de servicio Debe mostrar una notificación E incluso si el usuario no maneja la aplicación, debería continuar ejecutándose.Del mismo modo, el servicio de recepción Tiene su propio ciclo de vida Independientemente de la actividad o segmento en el que se creen. Un ejemplo de una aplicación que utilizará el servicio de primer plano es el siguiente:
——Aplicación de reproductor de música(Notificación de la canción actual)
——Aplicación de fitness(Muestra la distancia recorrida por el usuario)

¡evitar!Jefe de obra La API proporciona casi el mismo enfoque flexible que el servicio de primer plano.En muchos casos, los desarrolladores Debería preferir usar WorkManager En lugar de servicio de recepción.

2. Fondo:

Los tipos de servicios que realizan operaciones en segundo plano no proporcionarán a los usuarios ninguna información a través de notificaciones.Servicios en segundo plano Tiene su propio ciclo de vida Independientemente de la actividad o segmento en el que se creen. P.ej, Los desarrolladores pueden utilizar servicios en segundo plano para Comprima su almacenamiento.

¡evitar! Si su objetivo es API nivel 26 o superior, el sistema Imponga restricciones sobre la ejecución de servicios en segundo plano. Por ejemplo, los desarrolladores no deben acceder a la información de ubicación desde el fondo. o, Utilice WorkManager para programar tareas.

3-Encuadernación:

Tipos de servicios que proporcionan una interfaz cliente-servidor Permitir componentes (las actividades, los proveedores de contenido y los servicios pueden vincularse a servicios vinculados) y Sirva, envíe solicitudes, reciba resultados e incluso realice estas operaciones en todos los procesos a través de la comunicación entre procesos (IPC).

El servicio de encuadernación tiene Sin ciclo de vida propio. Por eso usan El ciclo de vida de una actividad o segmento.Además, el servicio de vinculación solo se puede ejecutar cuando el componente de la aplicación está vinculado a él. Similar, Múltiples componentes Puede vincularse al servicio inmediatamente, pero cuando Desenlazar todo El servicio es destruir.

En las secciones hasta ahora, discutimos cómo funcionan los servicios, tipos de servicios y ejemplos. Ahora revisaremos el ciclo de vida de los servicios para comprender mejor su estructura de trabajo.

Inicie el ciclo de vida del servicio y el servicio vinculado.

Como hemos visto en el ejemplo, tenemos dos ciclos de vida útil.

El servicio solo se inicia cuando lo llama el componente de la aplicación Comienza el servicio().

Una vez que se inicia este servicio, se ejecutará en segundo plano, incluso si el componente que lo creó se destruye (Ejecutar indefinidamente). Este servicio solo se puede detener en una de las dos situaciones siguientes:

  • mediante el uso Fuera de servicio() método.
  • mediante el uso Detente () método.

Solo cuando lo usan los componentes de la aplicación Enlazar servicio ().Cuando todos los clientes se desvinculan del servicio vinculado llamando Desvincular servicio () Función, el servicio finaliza a las Desatar destruir Funciones.

¡evitar! Aunque estos dos tipos de ciclos de vida parecen estar separados entre sí, nuestro servicio puede funcionar de dos formas. Se puede iniciar (ejecutar indefinidamente) con También permite la unión. Es solo una cuestión de si ha implementado varios métodos de devolución de llamada: onStartCommand() Deje que el componente lo inicie y onBind() Permitir encuadernación.

pronto, Nuestro servicio puedee Iniciar y vincular servicios al mismo tiempo.

¿Cuál es la diferencia entre el servicio inicial y el servicio vinculante?
¿Cuál es la diferencia entre el servicio inicial y el servicio vinculante?

IntentService es correcto Service La clase de componente que maneja solicitudes asincrónicas (representada como Intent) Bajo demanda. Procesa cada Intent uno por uno con la ayuda de un hilo de trabajo (no usa el hilo principal) y se detiene automáticamente cuando se completa el trabajo. Todas las solicitudes se controlan mediante un único hilo de trabajo, por lo que a veces pueden llevar mucho tiempo. Sin embargo, no interferirán con el bucle principal de la aplicación.

Para usarlo, Extender IntentService E implementar onHandleIntent(android.content.Intent)IntentService recibirá el Intent, iniciará un hilo de trabajo y detendrá el servicio según sea necesario.

¡evitar! Esta clase está obsoleta en el nivel de API 30. Considere usar WorkManager o JobIntentService, Utilice trabajos en lugar de servicios cuando se ejecute en Android 8.0 o superior.

1- Primero, debes declarar tu servicio en el archivo de manifiesto de la aplicación.

<manifest ... >
...
<application ... >
<service android:name=".ExampleService" />
...
</application>
</manifest>

2- Amplía tu curso.

public class ExampleService extends Service 
int startMode; // indicates how to behave if the service is killed
IBinder binder; // interface for clients that bind
boolean allowRebind; // indicates whether onRebind should be used

@Override
public void onCreate()
// The service is being created

@Override
public int onStartCommand(Intent intent, int flags, int startId)
// The service is starting, due to a call to startService()
return startMode;

@Override
public IBinder onBind(Intent intent)
// A client is binding to the service with bindService()
return binder;

@Override
public boolean onUnbind(Intent intent)
// All clients have unbound with unbindService()
return allowRebind;

@Override
public void onRebind(Intent intent)
// A client is binding to the service with bindService(),
// after onUnbind() has already been called

@Override
public void onDestroy()
// The service is no longer used and is being destroyed

Espero que este sea un artículo útil para ti. ¡Te deseo salud todos los días!

Foto de Svyatoslav Romanov en Unsplash

Referirse a:

https://developer.android.com/guide/components/services

LEER  Funciones, imágenes filtradas y más

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba