J'ai quelques difficultés à obtenir des performances en temps réel adéquates de mon application et je me demande si je l'ai architecturé de façon sous-optimale. L'exigence est que l'application joue un son et trace une ligne sur un Canvas
à un intervalle de temps spécifié par l'utilisateur.Architecture Android pour les applications en temps réel
J'ai un Thread
qui dort pendant l'intervalle de temps spécifié par l'utilisateur, qui se réveille et utilise un Handler
et un Runnable
pour effectuer le dessin et la lecture du son requis. Quand je cours l'application, le battement est stable parfois, mais d'autres fois, vous pouvez voir l'effet du GC et des conditions d'avertissement aléatoires du AudioFlinger
.
La meilleure approche est-elle d'avoir un filetage Timer
sur le fil d'interface graphique via Handler/Runnable? Y a-t-il quelque chose que je peux faire pour augmenter la priorité de mon application pendant qu'elle est visible afin que les autres applications et l'activité Android soient moins susceptibles de l'interrompre? Ai-je besoin d'utiliser le NDK pour accéder à des fonctionnalités en temps réel non présentes dans l'API Java?