2012-03-03 19 views
0

私はandengineで最初のプロジェクトを構築しようとしています。今のところうまく動作しますが、スレッドモデルに問題があります。 私が知る限り、uiのフリーズを防ぐために更新スレッドで計算を行う必要があります。 私の計算が実際にupdatethreadで行われていることを確認するために、私はfor-loopを使って模擬方法を作り、画面が凍結しているかどうかを確認しました。これは私のテストコードです:andengine:updatethreadの呼び出しがuiスレッド/アニメーションをフリーズする

これは私がシーンを初期化する方法である:

private void init() { 
     engine.registerUpdateHandler(new IUpdateHandler() { 

     @Override 
     public void onUpdate(final float pSecondsElapsed) { 
      gamemodel.test(); 
     } 

     @Override 
     public void reset() { 
     } 

    }); 

gamemodelは、このクラスからオブジェクトです:

public class Game { 

    public void test() { 
     for(int i=0;i<100000000;++i) { 
     } 
    } 

} 

私はまた、テストメソッドを呼び出そうとしましたengine.runOnUpdateThreadの中では動作しませんでした。

私は、テストメソッドがUIスレッドで呼び出されないため、シーン内のアニメーション(アニメーションスプライト)がフリーズしない点を除きます。そこでここでは何が起こっているのか、解決策は何ですか?

答えて

1

私が自分で見つけたのは、updatehandlerを登録するということは、updatehandlerが次のengineのupdateメソッドの呼び出しで実行されるということだけです。 メソッドを非同期で実行する場合は、asynctaskなどの内部で行う必要があります。