2011-12-25 6 views
2

私はアンドロイドを使用して少しゲームを書いて、スレッドにいくつかの問題があります。ゲームのメインループ は、この独自のスレッドで実行され、基本的にはこのような何かを行います。Androidのスレッド - ランニング可能なキュー

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

私は現在、2つのスレッドを使用して解決していると思います。 1つは、入力イベントを処理するrunableを取得するHandlerThreadと、NativeGameLib.gameTick(t)を含むrunableを定期的に生成する第2のスレッドです。コール。 しかし、私はそれが本当にエレガントではないと思います。 – Dirk

+0

C:\ android-sdk \ samples \ android-10 \ JetBoy C:\ android-sdk \ samples \ android-10 \ LunarLander – Selvin

答えて

関連する問題