2010-08-07 3 views
1

j'ai suivi ce tutoriel: http://www.droidnova.com/playing-with-graphics-in-android-part-iii,176.htmlFils et performances avec les jeux Android

Pour vous familiariser avec Android. Cela a été très, très utile. Dans celui-ci cependant, il utilise un fil pour gérer l'entrée, et un autre pour dessiner sur la toile. C'est la première fois que j'utilise des threads, et je me demande s'il est sage de mettre toute la méthode onDraw() dans un bloc synchronisé. Cela causera-t-il des problèmes de performances, en particulier dans un jeu traitant beaucoup de bitmaps?

Répondre

0

La question est en fait, pouvez-vous le faire sans le synchroniser? Que se passera-t-il si vous ne le faites pas bousiller la vue, ou même planter? Dans ce cas, vous serez simplement obligé de le synchroniser. Je ne suis pas vraiment un expert, mais je dirais presque que vous pouvez le faire dans un bloc synchronisé sans trop de problèmes. Cela dépend beaucoup de la taille des bitmaps. Si vous allez remplir tout l'affichage avec un gros bitmap, je suppose que cela pourrait vous poser des problèmes.
Si vous pouvez le faire sans synchronisation je l'éviterais en effet. Mais je me demande pourquoi vous essayez de le faire dans un bloc synchronisé? Je suppose que des choses comme canvas.draw seront synchronisées de la bonne façon par Android de toute façon. Dans ce cas, je vais vraiment essayer de voir s'il y a des problèmes si vous ne le synchronisez pas.
Je viens de jeter un rapide coup d'œil au tutoriel. Si je comprends bien, la méthode onDraw() sera appelée plusieurs fois. Dans ce cas, je m'inquiéterais beaucoup plus de BitmapFactory.decodeResource() Cela créera un nouvel objet Bitmap à chaque fois et il sera nettoyé par le Garbage Collector. Si vous allez pour la performance, le garbage collector est votre plus grand ennemi!
Si vous êtes à l'aise avec Android et que vous voulez continuer à écrire des jeux, je voudrais jeter un oeil à cette vidéo: http://www.youtube.com/watch?v=U4Bk5rmIpic&playnext=1&videos=Ur-J-xjmaLc Il est un peu avancé, mais il est très utile!