2012-04-04 6 views
1

ASyncTaskからメインスレッドに値を返す必要があるため、get()メソッドを使用してメインスレッドがバックグラウンドスレッドが実行されます。 get()を使用して値を返すときにAndroid ASyncTaskがonPreExecute()ダイアログを表示しない

time = mFetchServerDate.execute().get(); 

は、しかし、私のASyncTaskに私は、私は、get()を使用しないとき期待どおりに動作onPreExecute()メソッドの進捗ダイアログ開口部を持っていますが、私はそれに戻ってそれを追加するときだけでアプリをハング数秒間のダイアログが表示され、メインスレッドに戻ります。

@Override 
protected void onPreExecute(){ 
    super.onPreExecute(); 
    pd = ProgressDialog.show(mContext, "", "", true, false); 
} 
+1

ダイアログを表示するメインスレッドを一時停止すると、どのように表示されますか?\ – ngesh

+0

UIスレッドでget()を使用しないでください。 asyncTaskが終了するまで、進行状況ダイアログをキャンセルできないようにするか、UI要素を無効にすることができます。 – Renard

+0

十分なことに、とにかくサーバーから日付を取得する必要はありませんでした –

答えて

0

私はあなたがasyncTaskためget()方法を使用している場合は、その仕事はしていないことを確認していません。とにかくあなたができるユーザーthis.runOnUiThread(action);

あなたがAsyncTaksのようなスレッドでUIを更新する必要があるとき。

関連する問題