L'accès à la classe d'application de Récepteur de Radiodiffusion
Je veux vérifier la connexion internet dans la Diffusion de Récepteur; Et le résultat de set (Un indicateur booléen) à une variable globale, de l'utiliser sur l'ensemble de l'application, si les conditions; Que, si l'internet est interrompue, définir un statut imageview dans l'activité principale, à l'image rouge, et s'il est connecté, réglez-le sur vert.
J'ai suivi cette sujet. Mais il n'y a pas de getApplication()
en Récepteur de Radiodiffusion; Et iI devraient utiliser getApplicationContext()
à la place.
Que d'un autre côté, cette sujet:
lors de l'écriture de code dans un récepteur de radiodiffusion, ce qui n'est pas un contexte, mais
est dans un contexte donné, dans sa méthode onReceive, vous pouvez uniquement appeler
getcontexteapplication(). Ce qui signifie également que vous n'êtes pas garanti
pour avoir accès à votre application dans un BroadcastReceiver.
- Quelles sont les préoccupations?
- Comment puis-je accéder à mon application classe de Récepteur de radiodiffusion?
- Est-il la meilleure solution pour vérifier la connexion internet, définir une variable globale et changer mon statut imageview?
OriginalL'auteur Dr.jacky | 2014-07-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez accéder à votre
Application
classe dansBroadCastReceiver
à l'aide de son contexte,Bien sûr, vous n'avez accès à la classe d'Application dans BroadCastReceiver.
Est-ce que cela signifie devis n'est pas vrai? En passant, est-ce que mon scénario de recevoir et de changement de l'état du réseau est correcte totalement?
Qui, actuellement, l'objet retourné par getcontexteapplication se trouve être l'instance de l'application elle-même est un détail d'implémentation qui certainement n'est PAS garanti par l'API.
Pour se prémunir contre ClassCastExceptions, vous pouvez vérifier:
if (context.getApplicationContext() instanceof MyApplication) {
OriginalL'auteur Lalit Poptani
Peut-être que ça aidera quelqu'un. Si vous utilisez propre classe d'application:
Ensuite, vous pouvez utiliser App.get() dans votre récepteur de radiodiffusion.
Selon onCreate() docs il sera appelé avant de récepteur d'appels.
Ce n'est pas une bonne approche. S'il vous plaît regardez ceci: stackoverflow.com/a/45402990/421467
Avez-vous jamais eu de fuite de mémoire décrite dans la réponse que vous fournissez? Si oui, s'il vous plaît dites-moi le chemin à reproduire 🙂
OriginalL'auteur j2esu