Acceso global de Android a las habilidades de contexto (uso de contexto en cualquier momento y en cualquier lugar)

Referencia: Capítulo 13 de "La primera línea de código"

################################################## ###

Muchos lugares necesitan usar Context, desplegar Toast / iniciar actividad / enviar broadcast / operar base de datos / usar notificación, etc.

La actividad en sí misma es un objeto de contexto, pero cuando la arquitectura de la aplicación comienza a ser complicada, se separará una gran cantidad de código lógico de la clase de actividad, pero en este momento solo es necesario usar el contexto, entonces, ¿surge la pregunta?

##################################################

El primer método para obtener contexto

Establezca un Contexto en los parámetros del método llamado y pase un Contexto cuando espere otras llamadas a métodos, luego puede usar

Aunque esto también es una solución, la tarea de obtener el Contexto se transfiere a la persona que llama, sin considerar si la persona que llama puede obtener el objeto Contexto, por lo que este no es un buen método

################################################## ###

El segundo método (más efectivo)

Android proporciona una clase de aplicación, que el sistema inicializa automáticamente cada vez que se inicia la aplicación. Y podemos personalizar nuestra propia clase de Aplicación para administrar cierta información de estado global en el programa, como Contexto global

Primero, cree una clase MyApplication que herede de la aplicación:

package com.example.mylibrary;
 
import android.app.Application;
import android.content.Context;
 
/**
 * Created by root on 15-10-1.
 */
public class MyApplication extends Application {
    
    private static Context context;
 
    @Override
    public void onCreate() {
         super.onCreate(); 
         context = getApplicationContext();
    }
    
    public static Context getContext() {
        return context;
    }
}

En el código anterior, el método onCreate () de la clase primaria se reescribe, y se obtiene un Contexto a nivel de aplicación llamando al método getApplicationContext (), y luego se proporciona un método getContext estático para devolver el Contexto recién obtenido.


A continuación, debemos informar al sistema que la clase MyApplication debe inicializarse cuando se inicia el programa, en lugar de la clase de aplicación predeterminada.

Solo especifíquelo bajo la etiqueta <application> en el archivo AndroidManifest.xml:

    <application
        android:name="com.example.mylibrary.MyApplication"

Nota: Al especificar MyApplication aquí, debe agregar el nombre completo del paquete; de ​​lo contrario, el sistema no podrá encontrar esta clase


De esta manera, se realiza un mecanismo para obtener el Contexto globalmente, y no importa si desea usar el Contexto en cualquier parte del proyecto, solo necesita llamar a MyApplication.getContext ()

Toast.makeText (MyApplication.getContext (), "hola mylibrary", Toast.LENGTH_SHORT) .show ();


————————————————
Declaración de derechos de autor: Este artículo es un artículo original del blogger de CSDN "No. 1993", siguiendo el acuerdo de copyright CC 4.0 BY-SA, adjunte el enlace original y este Declaración
Enlace original: https://blog.csdn.net/u012005313/article/details/48848045

31 artículos originales publicados · Me gusta6 · Visitantes más de 10,000

Supongo que te gusta

Origin blog.csdn.net/u012824529/article/details/103673010
Recomendado
Clasificación