Я доработал видеоигру для Android-смартфонов, которая отлично работает, когда Real Time не слишком силен (т.е. игрок предоставляет событие каждую секунду). Но, когда я использую его «с решимостью как гик», возникает ошибка вне моего кода JavaFX (примерно каждые 15-20 минут).
Архитектура моего ПО проста: цикл активируется каждые 110 мс, датчик акселерометра и класс AndroidNativeAudio для звуков.
Я добавил некоторые трассировки отладки:
в начале и в конце цикла,
некоторые следы в AndroidNativeAudio и датчике (необязательно).
В этих условиях я заметил, что трассировка ошибки находится ВНЕ моего кода (цикл + акселерометр) и кода AndroidNativeAudio: в трассировке упоминается, что мой код полностью выполнен до возникновения ошибки. Итак, я застрял.
Вы уже сталкивались с такой проблемой с Javafx в игре в реальном времени, работающей на Android-смартфоне?
Где я могу получить исходный код JavaFxPorts (включая MediaPlayer) с трассировкой отладки javafxports, чтобы попытаться понять источник проблемы?
Если я не найду источник проблемы, перенос моего кода JavaFX (20 000 строк Javafx) на Java в студии Android может стать возможным (но это будет тяжелая работа, которой я бы хотел избежать).
Спасибо за ваш отзыв
Примечание. Параметр компилятора для обнаружения некоторой утечки памяти в моем коде установлен, и в настоящее время проблем с кодом нет.
Дополнительная информация: исключение FATAL систематически возникает с этим сообщением (вне моего кода, т.е. после окончания обработки внутри цикла 110 мс):
E/AndroidRuntime (14369): НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: поток приложения JavaFX
E/AndroidRuntime(14369): Процесс: com.gluonapplication, PID: 14369
E/AndroidRuntime (14369): java.lang.ArrayIndexOutOfBoundsException: длина = 20; индекс=-1
E/AndroidRuntime(14369): в java.util.ArrayList.get(ArrayList.java:310)
E/AndroidRuntime (14369): в javafx.scene.Parent.updateCachedBounds (Parent.java:1583)
E/AndroidRuntime(14369): в javafx.scene.Parent.recomputeBounds(Parent.java:1527)
E/AndroidRuntime(14369): в javafx.scene.Parent.impl_computeGeomBounds(Parent.jav
AndroidNativeAudio
. Вы можете добавить туда отладочную информацию. - person José Pereda   schedule 07.08.2017FXEntity
). Вы можете разветвить репо и добавить его перед сборкой, но это далеко не тривиальная задача. Вместо этого вы можете отлаживать приложение (см. это) , добавляя в свой код как можно больше журналов. - person José Pereda   schedule 12.08.2017