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