2010-08-07 2 views
1

Я после этого учебника: http://www.droidnova.com/playing-with-graphics-in-android-part-iii,176.htmlТемы и производительность с Android игр

, чтобы освоиться с Android. Это было очень, очень полезно. В этом он использует один поток для ввода ввода, а другой для рисования на холст. Это мой первый раз, когда я использую потоки, и мне интересно, целесообразно ли поместить весь метод onDraw() в синхронизированный блок. Это вызовет проблемы с производительностью, особенно в игре, обрабатывающей много растровых изображений?

ответ

0

Вопрос на самом деле, можете ли вы сделать это, не синхронизируя его? Что произойдет, если вы этого не сделаете, это испортит представление или даже сработает? В этом случае вам просто придется синхронизировать его. Я не настолько эксперт, но я почти догадываюсь, что вы можете сделать это в синхронизированном блоке, не имея слишком много проблем. Тем не менее это зависит от размера растровых изображений. Если вы собираетесь заполнить весь экран одним большим растровым изображением, я думаю, что это действительно может дать вам проблемы.
Если вы можете сделать это без синхронизации, я бы действительно избежал этого. Но мне интересно, почему вы пытаетесь сделать это в синхронизированном блоке? Я предполагаю, что такие вещи, как canvas.draw, будут синхронизироваться корректно в любом случае Android. В этом случае я бы просто попытался посмотреть, есть ли проблемы, если вы не синхронизируете его.
Я просто быстро просмотрел учебник. Если я получу это правильно, метод onDraw() будет вызываться несколько раз. В этом случае я бы больше беспокоился о BitmapFactory.decodeResource(). Каждый раз он будет создавать новый объект Bitmap, и он будет очищен сборщиком мусора. Если вы собираетесь работать, сборщик мусора - ваш самый большой враг!
Если вам понравилось Android и вы хотите продолжить писать игры, я бы посмотрел это видео: http://www.youtube.com/watch?v=U4Bk5rmIpic&playnext=1&videos=Ur-J-xjmaLc Он несколько продвинутый, но он очень полезен!

Смежные вопросы