Est-il correct d'appeler sendBroadcast () à partir d'un autre thread?

J'ai un service qui crée un fil. Ce thread fait du travail et appelle sendBroadcast() sur le Service . Cela signifie que sendBroadcast() est appelé à partir du thread de travail et non du thread sur sendBroadcast() le service s'exécute.

Est-ce OK ou dois-je m'assurer que sendBroadcast() est appelé du même thread que le Service (en utilisant Handler and Runnable )?

  • Emulator Android ne démarre pas dans MacOS 10.10
  • Android: problème de classe AudioRecord: le rappel n'est jamais appelé
  • Désélectionner par programme une application par défaut
  • Pourquoi je me trompe requestCode?
  • Android définit la forme XML comme programmable par programmation
  • Comment forcer un redémarrage du service?
  • J'ai trouvé cela sur stackoverflow et Dianne Hackborns .

    Selon le poste, il devrait être bon. La raison pour laquelle je demande, c'est parce que le poste a 2 ans et peut-être que quelque chose a changé. De même, je n'ai rien trouvé à ce sujet dans la documentation Android.

    2 Solutions collect form web for “Est-il correct d'appeler sendBroadcast () à partir d'un autre thread?”

    C'est bon. The Broadcast est remis au système d'exploitation Android et il est effectivement envoyé en utilisant des threads OS, de sorte que votre fil qui l'envoie n'a pas d'importance.

    Vous avez déjà obtenu votre réponse, mais peut-être que je peux en ajouter davantage.

    Il semble qu'il soit bon de l'appeler à partir de plusieurs threads. Peu importe le thread que vous appelez sendBroadcast(...) , c'est la méthode onReceive, elle va le gérer (comme vous le savez probablement). Et par défaut, il fonctionne sur le thread principal / UI de votre application. Vous pouvez modifier ce comportement via registerReceiver(...)

    C'est comme utiliser un messager pour avoir une connexion client-séparation. Rappelez-vous tous les messages, quel que soit le fil auquel ils ont été envoyés, manipulés dans une seule file d'attente de messages qui est consommée / bouclée sur un seul thread.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.