Je ne suis pas bon dans les techniques Android, c'est pourquoi je poste une question.Comment communiquer efficacement avec le fil de l'interface utilisateur sous Android?
Le serveur distant envoie des photos à l'appareil Android via une connexion TCP à haute fréquence (jusqu'à 30 images par seconde). L'appareil Android doit récupérer les images et les afficher dans le conteneur ImageView (simulation de vidéo).
Cause La manipulation de l'interface utilisateur n'est autorisée qu'à partir du thread principal J'ai rencontré des problèmes de performances. Maintenant, l'opération de réception réseau s'exécute dans un seul thread, ce qui déplace les données vers le thread UI sur chaque image reçue selon docs.
j'ai eu deux idées pour une meilleure performance:
- sauter quelques photos (mises à jour de thread d'interface utilisateur lui-même et prend le nouveau cadre de certaines ressources partagées avec fil de réseau)
- D'une certaine façon OPTIMIZE processus de dessin (maintenant je simplement assigner un bitmap à l'ImageView)
En raison de la mauvaise expérience d'Android je ne peux pas déterminer si ces idées sont appréciées. Donc, toutes les suggestions sont les bienvenues. Thx.
Peut-être un deuxième thread qui lit à partir d'une file d'attente ConcurrentLinkedQueue ou d'une autre file d'attente de thread sécurisé et publie les images interrogées dans votre vue? – JacksOnF1re
@ JacksOnF1re ce pourrait être une bonne idée (je considérais la mise en œuvre propre de file d'attente thread-safe) et je vais tester ses performances. Mais je pense que le vrai jalon est dans la façon de dessiner l'image sur l'écran (maintenant je construis un bitmap à partir de données brutes jpeg/png/bmp et l'assigner à ImageView). – f4f
Si vous avez le contrôle sur le serveur, je le streamerais en vidéo sur UDP. – nasch