2012-07-25 12 views
14

いつか私はAsyncTaskを使用することがタスクにとって非常に残忍であると感じます。私はAndroidのSwingUtilities.invokeLaterのような類似の機能を探しています。私はちょうど1行のコードを実行したいので、新しいクラスを作成するためのポイントはありません。同様の機能SwingUtilities.invokeLater in android?

答えて

22

はたぶんあなたが探している:

Activity.runOnUiThread(Runnable action) 
1

正確にはinvokeLater()のことを覚えていませんが、遅延したものを実行したい場合はpostDealayed()を使用できます。それはUIスレッド上にあるので、長時間実行するタスクには当てはまりません。

+1

'invokeLater()' 'Runnable'を置きますEDTによって実行されるように待ち行列に入れる。 –

+0

postDelayed()は静的関数ではありませんか?それから、私はそれを呼び出すためにUIスレッドのハンドラをいつも持っていなければなりませんか? – GMsoF

+0

@ GregKopffどこにあるクラス(クラス)の関数ですか? – GMsoF

4
Activity.runOnUiThread(Runnable action); 

それはあなたがUIスレッド上に既にあるならば、それはすぐにあなたのRunnableを実行するチェックするため、上記の方法は、JavaのinvokeLaterよりもわずかに異なっています。

Runnableが後で呼び出されることを確認するもう1つの方法は、UIスレッドを使用していても直ちに呼び出さないことです。 ..あなたは、メインスレッド上にある間、バックエンドであなたの実行可能なバックエンドのスレッドでexectedれるスレッドときは、これを呼び出す場合は...次のコードを記述することを行うには

Handler h = new Handler(); 
    h.post(new Runnable() { 
     @Override 
     public void run() { 
     //your code.. 
     } 
    ); 
関連する問題