Android (Kotlin) obtiene el contexto global de la aplicación ApplicationContext

necesidad

Android (Kotlin) obtiene el contexto global de la aplicación ApplicationContext .

El contexto que debe usarse en algunos escenarios no tiene nada que ver con la página y solo está relacionado con el proceso de la aplicación, como: leer y escribir archivos o acceder a bases de datos. En estos escenarios, esperamos poder obtener directamente el contexto de la aplicación global (ApplicationContext) en cualquier parte del proyecto, en lugar de obtener el Contexto en componentes como Actividad, Fragmento o Servicio, y pasarlo como un parámetro.


solución

La clase de aplicación está relacionada con el proceso de aplicación y cada proceso de aplicación tiene solo una instancia de aplicación. El ApplicationContext se puede obtener en la aplicación, y este contexto no tiene nada que ver con componentes como páginas, sino solo con el proceso de la aplicación. Convierta el ApplicationContext obtenido en un atributo de nivel superior, al que se puede llamar en cualquier parte del proyecto.

Los pasos de implementación son los siguientes:

  1. Personalice la aplicación y guarde su propia instancia de la aplicación.
  2. En AndroidManifest, la aplicación de configuración usa una aplicación personalizada.
  3. Defina el atributo de nivel superior appContext, que se asigna como ApplicationContext de la instancia de la aplicación.

 


código central

Aplicación personalizada

package com.example.applicationcontext

import android.app.Application

/**
 * 自定义 Application
 */
class MyApplication : Application() {

    companion object {
        lateinit var instance: Application
    }

    init {
        instance = this
    }

}

Configurar el manifiesto de Android

La etiqueta <application> establece el atributo de nombre y el valor del atributo es una aplicación personalizada.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:name=".MyApplication"
    </application>

</manifest>

Titular de contexto

Cree el archivo ContextHolder.kt y convierta ApplicationContext en el atributo de nivel superior appContext en este archivo para llamar al proyecto.

package com.example.fileio.util

import android.content.Context
import com.example.fileio.MyApplication

val appContext: Context = MyApplication.application.applicationContext

transferir

En cualquier parte del proyecto, puede llamar a appContext

package com.example.applicationcontext

import com.example.applicationcontext.manage.appContext

class Test {

    fun test() {
        appContext
    }

}


Imagen de muestra


Proyecto de muestra (Gitee código abierto)

Android/ApplicationContext Song Guanxun/Example- Code Cloud- Open Source China (gitee.com)


Descripción de la aplicación

Aplicación: la clase base para mantener el estado global de la aplicación.

Aplicación | Desarrolladores de Android (google.cn)

getApplicationContext() Descripción

Devuelve el contexto del objeto de aplicación globalmente único del proceso actual.

Este contexto (ApplicationContext) solo debe usarse cuando se requiere un contexto cuya vida útil sea independiente del contexto actual.

Este contexto está asociado con el ciclo de vida del proceso , no con el componente actual.


referencia

Escenarios de aplicación de contexto

Orden de ejecución del método de aplicación 

Supongo que te gusta

Origin blog.csdn.net/sgx1825192/article/details/127885808
Recomendado
Clasificación