2010-08-20 5 views
5

J'ai écrit le même programme de deux façons.SurfaceView vs Vue personnalisée (étendue de View). SurfaceView est plus lent, pourquoi?

L'un utilisant une vue de surface, et l'autre utilisant une vue personnalisée. Selon le guide de développement Android SDK, l'utilisation d'une vue de surface est préférable car vous pouvez générer un thread séparé pour gérer les graphiques. Le guide de développement du SDK prétend que l'utilisation d'une vue personnalisée avec des appels d'invalidation n'est utile que pour des animations plus lentes, des graphismes moins intenses.

Cependant, dans ma simple application, je peux clairement voir que l'utilisation d'une vue personnalisée avec des appels à invalider semble rendre plus rapidement.

Que savez-vous/pensez-vous à ce sujet?

Mon code touchEvent est exactement le même, et mon code de dessin est exactement le même. La seule différence est que l'un est dans le thread UI, et l'autre utilise une bande de roulement pour gérer le dessin. SurfaceView permet de travailler sur 2 tampons pour le dessin, que diriez-vous de votre vue personnalisée?

Répondre

2

Une autre chose: Vous avez mentionné que le doc dit invalidate fonctionne rapidement sur les animations plus lentes/graphiques moins intenses. Quelle est l'intensité de votre "application simple"? Vous devriez essayer de faire un test de stress et aussi prendre en compte, comment le thread unique gère votre entrée tactile.

J'ai 3 fils dans mon jeu. Un pour la logique du jeu, un pour le dessin puis le fil de l'interface utilisateur "normale" ...

+0

mon application prend des entrées tactiles et dessine un cercle qui suit votre doigt lorsque vous faites glisser sur l'écran tactile. Je remarque un peu plus de décalage avec la version de surface de l'application. Je dirais que mon application n'est pas intense en termes de traitement de l'interface utilisateur et des graphiques. –

+0

Ensuite, je définis intense autrement. Pour déterminer la performance réelle, vous devez séparer le traitement tactile et graphique à différents threads pour la vue de surface. Ensuite, vous obtenez des résultats réels. Faites aussi plus d'un cercle pour dessiner, car l'intense est plus ... Sur quel appareil avez-vous testé? – WarrenFaith

Questions connexes