2011-12-25 30 views
2

我嘗試使用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); 
    } 
    } 

任何想法? 謝謝。

+0

所有我可以在那一刻想到的是使用兩個線程解決它。一個處理輸入事件的可運行的HandlerThread和一個定期生成包含NativeGameLib.gameTick(t)的可運行的第二個線程;呼叫。 但我覺得它不是很優雅。 – Dirk 2011-12-25 13:27:34

+0

看看sdk的例子:C:\ android-sdk \ samples \ android-10 \ JetBoy C:\ android-sdk \ samples \ android-10 \ LunarLander – Selvin 2011-12-25 13:31:43

回答