Поиск
Меню
Категории раздела
Рекомендуем
|
ПотокиВсе методы в ApplicationListener вызываются в одном и том же потоке. Этот поток является потоком визуализации, в котором делаются OpenGL вызовы. Для большинства игр этого достаточно, чтобы реализовать обновление логики и визуализации в render() методе ApplicationListener интерфейса и в потоке визуализации. Любые операции связанные с графикой и прямым участием OpenGl, должны быть выполнены в потоке визуализации. Делая это в другом потоке может вызвать не предсказуемое поведение приложения. Это связано с тем, что контекст OpenGL находится в активном состоянии только в потоке визуализации. Смена текущего контекста в других потоках имеет проблемы на множестве Android устройств, поэтому это не поддерживается. Для передачи данных в поток визуализации из другого пока рекомендуется использовать postRunnable() метод из Application. Этим самым выполнение кода в будет в Runnable и в потоке визуализации при следующим кадре, но перед вызовам render() метода ApplicationListener интерфейса. new Thread(new Runnable() { HTML5По своей сути Javascript является однопоточным. Таким образом многопоточность не возможна. В будущем, одним из вариантов может быть Web Workers, однако данные между потоками передаются через сообщения. Java использует другие различные примитивы и механизмы, поэтому перенос кода для Web Workers будет столь прямым. |