2012-03-15 14 views
1

私は現在、単一のスレッドで実行されている単純なアンドロイドレンガブレーカーゲームを持っています。私は組み込まれたマルチスレッドにゲームをデザインすることを任されていますが、それを通して私を導くための簡単なチュートリアルを見つけるのに問題があります。私は現時点でスムーズにゲームを動かすことができます。MainActivity、GameView、GameLogic、SpriteObjectのクラスがあり、彼らの名前からかなり期待しています。現時点では、単に「タイマー」という外部変数を毎回インクリメントしていた別のスレッドをどこに実装すればよいでしょうか?Javaでアンドロイドで簡単にスレッドを作成できますか?

私はスレッドの周りに頭を浮かべるために苦労しているので、私はそれを得るために非常に懐かしくしなければならないかもしれません。

おかげでとても

答えて

1

そのだけで定期的に何かをやっている場合だけ、よりここで読むスケジューラ/タイマがありません新しいスレッドを作成する必要が

import java.util.concurrent.ScheduledFuture; 

private void startUpdateTimer(){ 
final Runnable updater = new Runnable() { 
    @Override 
    public void run() { 
     try { 
      updateTheActualVariable(); 
     } catch (Exception ex) { 
      Log.e("error in getting updates", ex.getMessage()); 
     } 
    } 
}; 
final ScheduledFuture updaterHandle = sheduler.scheduleAtFixedRate(updater, 0, Constants.GET_UPDATES_PERIOD, TimeUnit.SECONDS); 
} 

を使用http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html

あなたはまた、あなたの古き良きJavaのことができますタイマー http://developer.android.com/reference/java/util/Timer.html

+0

あなたは共有変数は 'volatile'またはいくつかの原子でなければならないことを言及するのを忘れてしまいました。 – toto2

1

Androidには、AsyncTaskと呼ばれるクラスがあります。 、

public class myTask extends AsyncTask<Object, Object, Object> { 

    @Override 
    protected Object doInBackground(Object... arg0) { 
       //Increase timer and wait here in a loop 
     return null; 
    } 

    protected void onPostExecute(Object result) { 
     //Something you want to do when done? 

    }; 



} 

単に

new myTask().execute(INPUT or null); 

一部が実行するようにパラメータのクラス型です呼び出すそれを起動するには:

はちょうどこのようにそれを拡張するクラスを作成します:)かなり気の利いありますビジュアル進捗の更新に使用できるオブジェクトのクラス型、およびdoInBackgroundが返す値とonPostExecuteが取得する値をそれぞれ取得します。

ガイドのために、ここに行く:http://android-developers.blogspot.com/2009/05/painless-threading.html

とドキュメント:http://developer.android.com/reference/android/os/AsyncTask.html

関連する問題