L'accès aux Ressources sans Contexte
Je suis en train de mettre de configuration, telles que l'Url/etc, dans un dossier de ressources pour une classe utilitaire à utiliser. Cependant, je ne veux pas passer le Contexte des activités partout. Je voudrais être en mesure d'accéder à une ressource via un nom de chemin d'accès (on dirait que les actifs/a été conçu pour cette utilisation), sans l'aide d'un contexte à l'accès à la ressource.
Dans ce cas particulier, je veux un singleton à utiliser quelque chose dans la configuration lorsqu'il est instancié. Il n'a pas besoin de quelque chose de ressources d'ailleurs qu'une seule fois lors de l'instanciation. Par conséquent, la réussite dans un Contexte à chaque fois getInstance() est appelée serait un gâchis complet.
Aussi, c'est spécifique à l'Application de configuration, et ne doivent pas être stockées dans un système partagé de fichier ou quelque chose comme ça.
Vous devez vous connecter pour publier un commentaire.
Utilisation
Vous pouvez utiliser ABSOLUMENT PARTOUT dans votre application, même dans des constantes statiques déclaration! Mais pour les ressources système uniquement.
Des ressources locales, l'utilisation cette solution.
Vous pouvez étendre la classe principale de l'application et de fournir à tous les accompagnateurs d'accéder à des ressources. Cela soulage le besoin pour le contexte que l'application serait de fournir le contexte de l'appelant. La classe d'application est singleton style, et il devrait toujours être disponible si une partie de votre application est en cours d'exécution (y compris les services).
Cela vous donne accès à:
Assurez-vous de déclarer votre application personnalisée dans votre manifeste pour accéder à cette. En supposant que votre application personnalisée est à la racine de votre application espace de noms:
Malheureusement, je ne pense pas qu'il y est un réel moyen de contourner cela. Je pose la mienne quelque chose comme cela, et aussi passer dans le getcontexteapplication() à la place de l'activité contexte.
Et puis:
Je recommanderais de faire le suivant:
Plutôt que de passer contexte partout faire de votre classe d'activité d'une classe singleton avec une fonction publique qui renvoie le contexte:
Initialiser l'intérieur onCreate() avant super.onCreate():
Puis ajouter ces fonctions à votre activité:
Maintenant, vous pouvez utiliser ce qui suit n'importe où dans toute la classe:
La stackoverflow réponse à la question ci-dessous montre l'utilisation de POJO pour obtenir un flux à une ressource, si vous offre son chemin. Cela peut être utile dans le cas, vous devez sélectionner une ressource spécifique à partir d'un des nombreux.
Est-il possible de lire les raw d'un fichier texte sans référence au Contexte dans un projet de bibliothèque Android