Java-приложение перегревается
Последние несколько месяцев у меня были проблемы с приложениями, которые я создал для Android. Похоже, что после относительно небольшого времени работы (примерно 10-20 минут) мой телефон начинает сильно нагреваться. Кроме того, приложение может начать отставать тонну (падение примерно 30-40 кадров). Я пытался выследить проблему некоторое время, но не повезло. У меня есть несколько идей относительно того, что может быть причиной проблемы, но я не смог подтвердить.
Вот немного информации о моей настройке, которая может быть причиной проблемы:
Приложение использует примерно 50-80 МБ, если загруженные звуки или изображения высокого качества иногда могут достигать 140 МБ.
Все прямо нарисовано на холсте Javas. (Можно ли попробовать сделать приложение высокого качества, используя холст Javas для рисования?)
Я не использую андроиды "активность" системы. Вместо этого у меня есть своя собственная система, которая создает и удаляет объекты посредством передачи строк, когда инициируются определенные события. (Таким образом, технически вся программа всегда выполняется в основном действии, а объекты обрабатываются через мою систему).
Я не использую какие-либо элементы пользовательского интерфейса Android, вместо этого я создал все самостоятельно. В них нет ничего сверхсложного, я просто не уверен, что использование элементов пользовательского интерфейса Android имеет какие-то преимущества, о которых я не подозревал.
Функция обновления основного объекта запускается в потоке, в то время как метод рисования сам по себе вызывает инвалидность. Мои объекты обновляются с помощью следующего кода
while (roomRunning) { if (!isPaused) update(); try { synchronized (this) { wait(5); } } catch (InterruptedException e) { e.printStackTrace(); } }
0,005 секунды - это скорость обновления кода. Эта частота обновления очень близка к 60 кадрам, и она кажется очень плавной, однако я все еще обеспокоен тем, что она может быть быстрой (особенно потому, что приложению иногда приходится обрабатывать сотни объектов на обновление кода).
Я контролировал использование памяти моим приложением и сравнивал его с другими играми, запущенными на моем телефоне. Использование памяти, кажется, там со многими другими приложениями, однако они не вызывают перегрев. Кроме того, при запуске приложения на телефоне друзей я не заметил проблем с перегревом или зависанием.
Может ли эта проблема быть вызвана неисправным телефоном, или мне нужно исправить что-то серьезное в моем приложении?
Если есть еще какая-то информация, необходимая для решения этой проблемы, пожалуйста, дайте мне знать.