Middle
Quelle est la différence entre le contexte de l'Application et le contexte de l'Activity?
sobes.tech IA
Réponse de l'IA
Le contexte Application donne accès aux ressources globales de l’application, et a une durée de vie tout au long de l’application. Le contexte Activity est lié au cycle de vie d’une Activity spécifique, contient des informations sur un écran particulier et donne accès à des ressources spécifiques à cette Activity (par exemple, le thème).
Principales différences :
- Durée de vie : Le contexte Application dure pendant toute la durée de l’application, tandis que le contexte Activity ne dure que pendant que cette Activity est active.
- Champ d’application : Le contexte Application est global à toute l’application, le contexte Activity est local à un écran spécifique.
- Accès aux ressources : Le contexte Application est utilisé pour les ressources communes, le contexte Activity pour les ressources spécifiques à l’Activity (par exemple, le thème).
- Fuites de mémoire : Une mauvaise utilisation du contexte Activity (par exemple, le stocker dans un champ statique) peut entraîner des fuites de mémoire, car il maintient une référence à l’Activity et à ses ressources. Le contexte Application est plus sûr pour un stockage prolongé.
Exemples d’utilisation :
- Obtenir des chaînes ou des couleurs communes :
// Partout dans l’application val appName = applicationContext.getString(R.string.app_name) - Créer une vue dans une Activity :
// Dans une Activity val textView = TextView(this /* ou this@MonActivity */) - Lancer une nouvelle Activity :
// Dans une Activity val intent = Intent(this, AutreActivity::class.java) startActivity(intent) - Accéder à SharedPreferences :
// Les deux contextes fonctionnent, mais lors de l’utilisation de Context.MODE_PRIVATE, il est préférable d’utiliser le contexte de l’Activity val prefs = getSharedPreferences("mes_prefs", Context.MODE_PRIVATE)
Il est important d’utiliser le contexte approprié pour éviter les fuites de mémoire et assurer le bon comportement de l’application. Dans la plupart des cas, pour les opérations spécifiques à l’UI, on utilise le contexte de l’Activity, et pour les tâches non liées à un écran spécifique, le contexte Application.