Я пытаюсь написать небольшую игру с помощью Android и проблемы с потоковой обработкой. основного цикла игры проходит в этом отдельном потоке и в основном просто делает что-то вроде этого:Android Threading - Queue runables
public void run() {
while (true) {
NativeGameLib.gameTick(t);
}
}
Теперь я хочу, чтобы передать сенсорные входы в мой NativeGameLib. Я думал, что я использую onTouchEvent() представления в UI-потоке, создаю runable внутри и позволяю ему исполнять в потоке основного цикла.
Но я действительно не понимаю, как это сделать. Я видел, что есть класс Handler и Looper, и я могу использовать обработчик для отправки runables в функцию messageQueue и Looper.loop() для обработки очереди.
Насколько я понимаю, функция loop() бесконечно проверяет новые сообщения и, следовательно, блокирует поток. Итак, как я могу объединить его с моей нитью. Я хочу сделать что-то подобное в потоке:
public void run() {
while (true) {
processMessageQueue();
NativeGameLib.gameTick(t);
}
}
Любые идеи? Спасибо.
Все, что я могу думать на данный момент ее решения с использованием двух потоков. один HandlerThread, который получает runables для обработки входных событий и второго потока, который периодически также генерирует runable, содержащий NativeGameLib.gameTick (t); вызов. Но я думаю, что это не очень элегантно. – Dirk
Взгляните на примеры sdk: C: \ android-sdk \ samples \ android-10 \ JetBoy C: \ android-sdk \ samples \ android-10 \ LunarLander – Selvin