Je suis un énorme fan de cotisations de Source Open Source Square a fait au Android communauté et examinait leur dernière contribution Otto (bus d'événement)
Creusez plus profondément, je vois que Otto utilise la réflexion et il n'y a pas de diffusion ordonnée (un motif où un message inconnu est transmis d'un récepteur au prochain récepteur à l'écoute du même type d'événement) Otto croit en plus d'un feu d'incendie et d'oublier.
Maintenant Android a LocalBroadcastManager
(LBM) dans sa bibliothèque de support V4 qui sert le même objectif, bien qu'il soit plus en vigueur et a plus de restrictions sur les objets qui sont passés. Mais sur le Un côté plus lumineux, il prend en charge la diffusion ordonnée et sa plus semblable à la diffusion normale.
Les deux Otto et LBM sont dans le même espace de processus pour en termes de vitesse, je suppose que les deux seraient même. La seule vraie différence que je pouvais voir est que Otto vous permet de définir des événements personnalisés et que vous n'avez pas à sérialiser/coller les objets.
D'où ma vraie question est quand utiliseriez-vous Otto si LBM fait les mêmes choses.
Les références :
http://nick.perfected.com/otto-event-system/
tiliser des intentions ou un bus d'événement pour communiquer dans la même application
https://plus.google.com/107049228697365395345/posts/6j4Anwngcuy
Mais du côté plus lumineux, il supporte une diffusion ordonnée
Pas vraiment. Il n'y a pas sendOrderedBroadcast()
sur LocalBroadcastManager
et la priorité sur le IntentFilter
ne semble pas être utilisé. Si vous voulez dire "les émissions seront livrées dans l'ordre que j'ai enregistré les récepteurs", ce qui pourrait être le comportement actuel, mais rien ne garantit qu'il restera de cette façon.
Otto et LBM sont dans le même espace de processus, donc en termes de vitesse, je suppose que les deux seraient les mêmes
Ils seraient similaires, bien que probablement pas identiques.
D'où ma vraie question est quand utiliseriez-vous Otto si LBM fait les mêmes choses
Comparaison de ces deux, Otto a une API plus propre, IMHO.
Personnellement, j'utiliserais Eventbus de Greenrobot sur l'un ou l'autre de ceux-ci, car il offre des modèles de filetage plus flexibles.
Otto et LBM sont dans le même espace de processus, donc en termes de vitesse, je suppose que les deux seraient les mêmes.
J'ai découvert que l'enregistrement des événements Otto est assez coûteux, il faut parfois plus de 16 millisecondes pour enregistrer les abonnés d'événements (cela signifie que vous déposez 1 FPS!). C'est quelque peu attendu, comme l'abonnement à l'événement à Otto se fait par réflexion. Bien que pour LBM, cela ne prend que quelques centaines de μs que pour l'enregistrement, qui est presque 32 fois plus rapide. (Résultat de TrackView, Samsung Galaxy S4)
Mais bien sûr, utiliser Otto peut écrire moins de code, il y a un compromis.