AndEngine - Аккумуляторная батарея и устройство обогрева
Я разработал свою игру, используя AndEngine, и у меня есть одна серьезная проблема. Пользователи сообщают мне, что игровой аппарат сильно перегревает и разряжает батарею. Я не понимаю, почему это происходит, потому что игра - простая головоломка, и я не использую сложную анимацию или физику. Кроме того, я отключил обновления для большей части спрайтов и установил параметры wakelock:
engineOptions.setWakeLockOptions(WakeLockOptions.SCREEN_ON);
но это не помогает. Вы можете увидеть игру здесь: https://play.google.com/store/apps/details?id=com.icecat.hex
Я буду рад задать любые вопросы о коде. Пожалуйста, напишите, что вы думаете о возможных проблемах или настройках двигателя, которые могут вызвать эту проблему.
1 ответ
РЕЗЮМЕ:
• Никогда не опрашивать для ввода пользователя
• Проверьте пользовательский ввод в лучшем случае>250 мс
• Опрос убьет вашу энергоэффективность
• Проверка пользовательского ввода <250 мсек не даст более быстрого времени отклика и отрицательно скажется на вашей энергоэффективности
ПОДРОБНОСТИ:
Что-то проверить, как вы ожидаете ввода пользователя. Я считаю, что архитектура процессора ARM Cortext A8 (я думаю, что это основа для S2) имеет расширенные функции управления питанием. Под этим я подразумеваю, что он имеет состояния питания процессора в режиме ожидания, а это означает, что процессор перейдет в спящий режим, когда не будет делать ничего, как ожидание ввода пользователя.
Очень распространенной ошибкой является либо опрос, либо проверка слишком большого количества входных данных. Мы говорим себе: "Мне нужно как можно быстрее реагировать на пользовательские события", а затем опрашивать или прерывать, чтобы проверять ввод через периоды <10 мсек.
Есть две проблемы с этим. Самый быстрый человеческий ответ ->.25сек. Когда мы включаем любое мышление со стороны пользователя, оно становится>.5sec.
Есть несколько серьезных проблем, одна из которых может способствовать вашей проблеме:
Лучший ответ пользователя>.25sec
Добавьте в расчет вашей программы, нижняя граница ответа вашего приложения может быть >>.25sec
Самое главное, что чрезмерная проверка предотвращает переход процессора в спящий режим, а переход в спящий режим - это то, как процессор экономит большую часть своей мощности. Переход в режим сна и пробуждение практически не влияют на производительность, поскольку процессор по определению ничего не делает, а пробуждение не приводит к значительным задержкам (<<500usec и, вероятно, ближе к 100usec).
Если вы хотите узнать больше, посмотрите " Список полезных статей, блогов и ссылок по управлению питанием и управлению питанием". В более поздней работе упоминаются архитектуры HPC (высокопроизводительные вычисления) и Intel, но принципы и методы применимы ко всем современным процессорам, включая планшеты и телефоны.