我嘗試使用android編寫一個小遊戲,並遇到線程問題。 遊戲的主循環在這個自己的線程中運行,基本上只是做這樣的事情:Android線程 - 隊列runables
public void run() {
while (true) {
NativeGameLib.gameTick(t);
}
}
現在我想觸摸輸入傳遞給我的NativeGameLib。我以爲我在UI線程中使用視圖的onTouchEvent(),創建一個可運行的內部並讓它在主循環線程上執行。
但我真的不知道該怎麼做。我看到有一個Handler和一個Looper類,我可以使用該處理程序將可運行程序發佈到messageQueue和Looper.loop()函數來處理隊列。據我所知,loop()函數無休止地檢查新消息並因此阻塞該線程。 那麼,我該如何將它與我的線程結合起來。我想在線程中這樣做:
public void run() {
while (true) {
processMessageQueue();
NativeGameLib.gameTick(t);
}
}
任何想法? 謝謝。
所有我可以在那一刻想到的是使用兩個線程解決它。一個處理輸入事件的可運行的HandlerThread和一個定期生成包含NativeGameLib.gameTick(t)的可運行的第二個線程;呼叫。 但我覺得它不是很優雅。 – Dirk 2011-12-25 13:27:34
看看sdk的例子:C:\ android-sdk \ samples \ android-10 \ JetBoy C:\ android-sdk \ samples \ android-10 \ LunarLander – Selvin 2011-12-25 13:31:43