Я пытаюсь написать небольшую игру на android, но у меня проблемы с потоками. Главный цикл игры запускается в этом собственном потоке и в основном делает что-то вроде этого:
public void run() {
while (true) {
NativeGameLib.gameTick(t);
}
}
Теперь я хочу передать сенсорный ввод в мою NativeGameLib. Я думал, что использую onTouchEvent () представления в потоке пользовательского интерфейса, создаю исполняемый объект внутри и позволяю ему выполняться в потоке основного цикла.
Но я действительно не понимаю, как это сделать. Я видел, что есть класс Handler и Looper, и что я могу использовать обработчик для публикации исполняемых файлов в messageQueue и функцию Looper.loop () для обработки очереди.
Насколько я понимаю, функция loop () бесконечно проверяет наличие новых сообщений и поэтому блокирует поток. Итак, как мне совместить это с моей веткой. Я хочу в ветке сделать что-то подобное:
public void run() {
while (true) {
processMessageQueue();
NativeGameLib.gameTick(t);
}
}
Любые идеи? Спасибо.