Cuatro componentes principales en Android

Cuatro componentes principales de Android:

1. Clasificación: Actividad, Servicio, Receptor de Difusión, Proveedor de Contenido.

Insertar descripción de la imagen aquí

1 、 Actividad

(1) Una Actividad suele ser una pantalla (ventana) separada.
(2) Las actividades se comunican a través de la Intención.
(3) Cada Actividad en una aplicación de Android debe declararse en el archivo de configuración AndroidManifest.xml; de lo contrario, el sistema no reconocerá ni ejecutará la Actividad.

2 、 Servicio

(1) El servicio se utiliza para completar operaciones especificadas por el usuario en segundo plano. Hay dos tipos de servicios:

(a) iniciado: cuando un componente de la aplicación (como una actividad) llama al método startService () para iniciar el servicio, el servicio está en el estado iniciado.
(b) vinculado: cuando el componente de la aplicación llama al método bindService () para vincularse al servicio, el servicio está en estado vinculado.

(2) La diferencia entre startService() y bindService():

(a) El servicio iniciado (servicio iniciado) lo inician otros componentes que llaman al método startService (), lo que hace que se llame al método onStartCommand () del servicio. Cuando un servicio está en estado iniciado, su ciclo de vida es independiente del componente que lo inició y puede ejecutarse en segundo plano indefinidamente, incluso si el componente que inició el servicio ha sido destruido. Por lo tanto, el servicio debe detenerse llamando al método stopSelf() después de completar la tarea, o mediante otros componentes llamando al método stopService().
(b) Utilice el método bindService() para habilitar el servicio. La persona que llama y el servicio están vinculados. Una vez que la persona que llama sale, el servicio finalizará. Esto tiene la característica de "si no desea vivir en el mismo tiempo, debes morir al mismo tiempo".

(3) Los desarrolladores deben declarar todos los servicios en el archivo de configuración de la aplicación mediante etiquetas.
(4) El servicio generalmente se ejecuta en segundo plano y generalmente no necesita interactuar con los usuarios, por lo que el componente del Servicio no tiene una interfaz gráfica de usuario. Los componentes del servicio deben heredar la clase base del servicio. Los componentes de servicio generalmente se utilizan para proporcionar servicios en segundo plano para otros componentes o monitorear el estado de ejecución de otros componentes.

3 、 Proveedor de contenido

(1) La plataforma Android proporciona un proveedor de contenido para proporcionar el conjunto de datos especificado de una aplicación a otras aplicaciones. Otras aplicaciones pueden obtener o almacenar datos de este proveedor de contenido a través de la clase ContentResolver.
(2) Los proveedores de contenido solo son necesarios si es necesario compartir datos entre varias aplicaciones. Por ejemplo, los datos de la libreta de direcciones son utilizados por múltiples aplicaciones y deben almacenarse en un proveedor de contenido. Su beneficio es unificar la forma en que se accede a los datos.
(3) ContentProvider realiza el intercambio de datos. ContentProvider se utiliza para guardar y obtener datos y hacerlos visibles para todas las aplicaciones. Esta es la única forma de compartir datos entre diferentes aplicaciones porque Android no proporciona un área de almacenamiento común al que puedan acceder todas las aplicaciones.
(4) Los desarrolladores no utilizarán directamente objetos de la clase ContentProvider. La mayoría de ellos implementan operaciones en ContentProvider a través de objetos ContentResolver.
(5) ContentProvider utiliza URI para identificar de forma única su conjunto de datos. El URI aquí tiene el prefijo content://, lo que indica que los datos son administrados por ContentProvider.

4 、 Receptor de transmisión

(1) Su aplicación puede usarlo para filtrar eventos externos y solo recibir y responder a eventos externos de interés (como cuando entra una llamada telefónica o cuando la red de datos está disponible). Los receptores de transmisión no tienen interfaz de usuario. Sin embargo, pueden iniciar una actividad o servicio en respuesta a la información que reciben, o utilizar un NotificationManager para notificar al usuario. Las notificaciones se pueden utilizar de muchas maneras para atraer la atención del usuario, como hacer parpadear la luz de fondo, vibrar, reproducir sonidos, etc. En términos generales, coloca un ícono persistente en la barra de estado que el usuario puede abrir y recibir el mensaje.
(2) Existen dos métodos para registrar receptores de transmisión: el registro dinámico en el programa y el registro estático en el archivo AndroidManifest.
(3) La característica de los receptores de transmisión registrados dinámicamente es que cuando se desactiva la actividad utilizada para registrarse, la transmisión dejará de ser válida. El registro estático no necesita preocuparse por si el receptor de transmisión está apagado, siempre que el dispositivo esté encendido, el receptor de transmisión también estará encendido. Es decir, incluso si la aplicación en sí no se inicia, la transmisión suscrita por la aplicación la afectará cuando se active.

2. Resumen de los cuatro componentes principales de Android:

1. Registro de 4 componentes principales.

Los cuatro componentes básicos deben registrarse antes de poder usarse. Cada actividad, servicio y proveedor de contenido deben configurarse en el archivo AndroidManifest. Las actividades, servicios y proveedores de contenido que no estén declarados en el archivo AndroidManifest no serán visibles para el sistema y, por lo tanto, no estarán disponibles. El registro de receptores de transmisión se divide en registro estático (configurado en el archivo AndroidManifest) y creación dinámica mediante código y registro en el sistema llamando a Context.registerReceiver(). Cabe señalar que el receptor de transmisión configurado en el archivo AndroidManifest permanecerá activo cuando se inicie el sistema y se activará siempre que se reciba una transmisión interesada (incluso si el programa no se está ejecutando).

2. Activación de 4 componentes principales.

Activación del proveedor de contenido: después de recibir una solicitud de ContentResolver, se activa el proveedor de contenido. Los otros tres componentes, actividades, servicios y receptores de transmisión, se activan mediante un mensaje asincrónico llamado intención.

3. Cierre de 4 componentes principales

Los proveedores de contenido solo se activan en respuesta a solicitudes de ContentResolver. Un receptor de transmisión solo se activa en respuesta a mensajes de transmisión. Por lo tanto, no es necesario cerrar explícitamente estos componentes. Cierre de actividad: puede cerrar una actividad llamando a su método Finish(). Cierre del servicio: para los servicios iniciados mediante el método startService(), se debe llamar al método Context.stopService() para cerrar el servicio. Para los servicios iniciados mediante el método bindService(), se debe llamar al método Contex.unbindService() para cerrar el servicio.

4. Tareas en Android (pila de actividades)

(a) Una tarea es en realidad una pila de actividades, que consta de una o más actividades que juntas completan una experiencia de usuario completa. La parte inferior de la pila es la actividad que inicia toda la tarea, y la parte superior de la pila es la actividad actualmente en ejecución con la que el usuario puede interactuar. Cuando una actividad inicia otra, la nueva actividad se inserta en la pila y se convierte en la actividad actual. actividad de carrera. La actividad anterior permanece en la pila. Cuando el usuario presiona la tecla ATRÁS, la actividad actual sale de la pila y la anterior regresa a la actividad que se está ejecutando actualmente. Lo que se guarda en la pila es en realidad un objeto. Las actividades en la pila nunca se reorganizarán, solo se empujarán o extraerán.
(b) Todas las actividades de la tarea se mueven como un todo. La tarea completa (es decir, la pila de actividades) se puede mover al primer plano o retirarse al fondo.
(c) El sistema Android es un sistema operativo multitarea que puede ejecutar muchos otros programas mientras escucha música en su teléfono móvil. Cada vez que se ejecuta una aplicación adicional, se consumirá más memoria del sistema. Cuando se ejecutan demasiados programas al mismo tiempo, o el programa cerrado no libera memoria correctamente, el sistema se sentirá cada vez más lento, o incluso inestable. Para resolver este problema, Android introdujo un nuevo mecanismo, llamado Life Cycle.

3. Dos formas de iniciar servicios de Android

Prólogo: El servicio es uno de los cuatro componentes principales de Android y también es un programa ejecutable. Los servicios son una solución para ejecutar programas en segundo plano en Android, son muy adecuados para realizar tareas que no requieren interacción con los usuarios y requieren una ejecución prolongada. Hay dos formas de iniciar el Servicio. Resumamos las diferencias entre las dos formas.

1. La primera forma de iniciar el Servicio

Utilice el método de inicio para iniciar el servicio.

Uso básico de servicios: 1. Cree una clase que herede el Servicio, indicando que se trata de un servicio.

2. Regístrese en AndriodMainfest.xml. Cada servicio debe estar registrado para que tenga efecto. Se registrará de forma predeterminada en Android Studio.

3. Utilice el método startService(Intent) de Context para iniciar el Servicio.

4. Utilice stopService(Intent) para detener el servicio.

Nota: El ciclo de vida del Servicio iniciado utilizando este método de inicio es el siguiente: onCreate()—>onStartCommand()—>onDestory(). onCreate () se ejecutará una vez cuando se cree el servicio, y onStartCommand () se ejecutará cada vez que se inicie el servicio. Cuando el servicio se detenga, se llamará a onDestroy ().

Características: Aunque el servicio se inicia en la actividad, una vez iniciado el servicio, básicamente no existe ninguna relación entre la actividad y el servicio. Después de que el servicio se ejecuta onStartCommand() después de su inicio, siempre estará ejecutándose y la actividad no se puede controlar. El método onBind() puede acercar la relación entre actividades y servicios.

2. La segunda forma de crear un Servicio.

Utilice bind para iniciar el servicio

Pasos para utilizar el Servicio: 1. Cree una clase que herede el Servicio, indicando que se trata de un servicio.

2. Regístrese en AndriodMainfest.xml. Cada servicio debe estar registrado para que tenga efecto. Se registrará de forma predeterminada en Android Studio.

3. Utilice el método bindService(Intent, ServiceConnection, int) de Context para iniciar el Servicio

4. Cuando ya no esté en uso, llame al método unbindService(ServiceConnection) para detener el servicio.

El ciclo de vida de un Servicio iniciado utilizando este método de inicio es el siguiente:

onCreate()—>onBind()—>onunbind()—>onDestory()

Nota: El servicio vinculado no llamará al método onstart() o onstartcommand()

Características: Utilice el método de vinculación para iniciar el servicio y vincularlo. Si la persona que llama cuelga, el servicio también colgará.

El enlazador puede llamar a métodos en el servicio.

4. Ciclo de vida de la aplicación

Recientemente, estuve estudiando el desarrollo del complemento Replugin y descubrí que la inicialización se llama en la Aplicación, por lo que quiero adquirir algunos conocimientos sobre la Aplicación.

1. Métodos relacionados

onCreate(): llamado al crear

adjuntoBaseContext (base de contexto): heredado de ContextWrapper, establece el contexto más básico

onTerminate(): se llamará cuando la aplicación esté completamente cerrada. Cuando se probó con el simulador, no se encontró ninguna devolución de llamada.


onConfigurationChanged(@NonNull Configuration newConfig): llame a onLowMemory() cuando cambie la configuración : cuando la memoria del sistema esté baja, le notificará que libere recursos.

onTrimMemory (nivel int): notifica que se libere memoria. Durante la prueba real, este método se llamará cuando se cierre la aplicación, por lo que los recursos se pueden liberar aquí.

2. ciclo de vida

Cuando la aplicación se abre por primera vez:
Operación: haga clic para abrir la aplicación, presione la tecla de retorno para salir de la aplicación

Insertar descripción de la imagen aquí

Abre la aplicación por segunda vez (sin cerrarla por completo)

Insertar descripción de la imagen aquí

El método onTrimMemory() solo se llamará al cerrar, y no se llamará a onCreate() y adjuntoBaseContext() anteriores.

Abra la aplicación varias veces (sin cerrarla por completo)

Insertar descripción de la imagen aquí

Todos solo llamarán al método onTrimMemory()

Cierra la aplicación por completo y vuelve a abrirla.

Insertar descripción de la imagen aquí

Tendrá el mismo ciclo de vida que cuando se abrió por primera vez.

Resumen: las bibliotecas de terceros se inicializan básicamente en el método onCreate(); si desea liberar recursos, es mejor hacerlo en el método onTrimMemory(), porque no se ha llamado a onTerminal(); sino bibliotecas de terceros. Es necesario prestar atención a la liberación de recursos, porque onCreate () La segunda apertura no continuará ejecutándose, en este momento debe verificar si se ha inicializado, de lo contrario se producirá un bloqueo no inicializado.

Supongo que te gusta

Origin blog.csdn.net/zxz_zxz_zxz/article/details/131046310
Recomendado
Clasificación