Как тянуть жребий битовых массивов на экране в игре Android без медленной производительности

Легкий: Запишите стог сена! Позже, только игла останется. Кроме того, Вы могли попробовать магниты.

А более трудный вопрос: Как Вы находите одну конкретную иглу в пуле игл?

Ответ: распараллельте каждого и присоедините другой конец каждой скрутки потока к отсортированному индексу (т.е. указатели)

12
задан 16 September 2009 в 03:07
поделиться

3 ответа

Похоже, вы создаете новый экземпляр каждого растрового изображения для каждой визуализированной плитки. Может, вместо этого вы могли бы создать по одному экземпляру для каждого типа плитки? Пример:

private Bitmap wallTile = BitmapFactory.decodeResource(getResources(), R.drawable.walla);
private Bitmap floorTile = BitmapFactory.decodeResource(getResources(), R.drawable.floore);

Затем повторно используйте один и тот же экземпляр плитки каждый раз, когда она отрисовывается. Если это не сработает, вам следует провести какое-то измерение производительности, чтобы увидеть, какая часть кода занимает больше всего времени, и минимизировать количество запусков этого кода или попытаться сократить его.

Отказ от ответственности: я не программист Android

28
ответ дан 2 December 2019 в 03:14
поделиться

Проблема довольно очевидна. Вы просто теряете адскую память. Загляните в LogCat, и вы поймете, что я имею в виду. 1. НИКОГДА не выделяйте строки в каждом кадре. Они неизменяемы, поэтому каждая операция со строками равносильна утечке памяти. Вместо этого используйте простой объект char [], который вы изменяете. 2. Прекратите создавать растровые объекты снова и снова. Я предполагаю, что метод DecodeBitmap внутренне выделяет объект растрового изображения для каждого вызова. Плохо делать это каждый кадр.

Как показывает опыт -> утечка памяти и, кстати, сборщик мусора - очень дорогостоящие операции, которых следует избегать при рисовании.

15
ответ дан 2 December 2019 в 03:14
поделиться

Я никогда раньше не программировал для Android, поэтому я не на 100% уверен в том, что там происходит под крышками, но предполагаю, что:

BitmapFactory.decodeResource(getResources(), R.drawable.walla);

этот фрагмент кода идет и загружается переносит растровое изображение в память, может показаться, что вы перезагружаете каждое растровое изображение по мере его рисования.

То, что я делал в прошлом при разработке небольших игр, - это когда вы загружаете уровень, прорабатываете все необходимые ресурсы, затем загрузите их в память один раз, а затем повторно используйте.

3
ответ дан 2 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: