2011-08-01 1 views
0

私はonCreateの間に呼び出される長時間実行されるメソッドを持っていますが、このメソッドはtextviewsを読み込んでUIとやりとりし、70個のラベルを更新します)。大きなメソッドが実行されているときにアンドロイドにprogressdialogを表示します

このメソッドを実行すると、進行状況ダイアログが表示されます。

理想的には、アクティビティが表示され、進行状況が表示されたらUIスレッドでメソッドを起動したいのですが、これはできません。このメソッドは、メソッドが終了するまでペイントしません。

アクティビティが表示された後に発生したイベントを見つけようとしましたが、下のものが見つかりましたが、方法が終了するまで画面が黒くなります。

@Override ます。public void onPostCreate(バンドルsavedInstanceState)

私は通常、WP7の開発者です、そしてユーザーが持っている前に、.NETで使用すると、UIが表示された後に解雇されたonLoadCompleteのイベントハンドラを追加しますが、 UIと対話するチャンス、Android JAVAでこれをどうやってやるの?

ありがとう

+0

を更新するために、あなたのメソッド内でこれを行うことができますのonCreate()またはonResume()メソッドで次に

はこれを行いますか? – PedroAGSantos

答えて

0

ProgressBarをビューに配置します。あなたは無痛threathingを見てきました

new Thread() { 
    public void run() { 
     yourLargeMethod(); 
    } 
}.start(); 

は今、あなたはプログレスバー

public void yourLargeMethod() { 
// doSomething 
... 

runOnUiThread(new Runnable() { 
     public void run() { 
      // update the progress from the thread 
      progressBar.setProgress(x); // x is your progress, 0 <= x <= progressBar.getMax() 
     } 
    }); 
} 
+0

AsyncTaskを使用する方が良いでしょう。 – Kaj

+0

AsyncTaskを使用すると、イベントハンドラをボタンなどに配線するだけでなく、UI 70を奇数回更新する必要があります。私の長い方法は計算ではなく、大規模なonscreeenレポートを設定しているので、UIスレッドで実行することは私にとって最も有益です。UIの作成中にプログレスバーでUIをブロックするだけです。アクティビティのポストレンダリングと呼ばれるイベントはありませんか? – Ben

+0

ProgressBarを表示せず、表示されていない選択したViewGroupに別のスレッドでUIをビルドしないのはなぜですか?最後に結果のViewGroupをメインレイアウトに追加し、ProgressBarを削除/非表示にします。 UIスレッドで行うと、progressBarは動かず、デバイスはコマンドに応答しません。 – Auras

関連する問題