アプリでAsyncTaskの進行状況ダイアログに問題があります。AsyncTask
インターネットからデータを取得しています。doInBackGround()
で進行状況ダイアログを開始しonPreExecute()
、でダイアログを終了してい onPostExecute()
ます。
ボタンをクリックすると、このasyncTaskを実行します。初めてこのボタンをクリックすると(長時間の操作が行われます)、進行状況ダイアログが表示されません。ただし、次回は[進行状況]ダイアログが正常に表示されます。
初回実行時AsyncTask
に進行状況ダイアログが表示されない問題は何でしょうか?
これはonClickメソッドです:
public void onClickFind(View view){
new Task_Search().execute();
}
これはタスクTask_Search
です:
private class Task_Search extends AsyncTask<Void, Void, Void> {
@SuppressWarnings("deprecation")
protected void onPreExecute() {
showDialog(DIALOG_TASKING);
}
protected Void doInBackground(Void... unused) {
//some geting of web content here
}
@SuppressWarnings("deprecation")
protected void onPostExecute(Void unused) {
dismissDialog(DIALOG_TASKING);
}
}
で定義された進行状況ダイアログMainActivity
:
@SuppressWarnings("deprecation")
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_TASKING:
mSearchDialog = new ProgressDialog(this);
mSearchDialog.setMessage("Searching for field number..");
mSearchDialog.setCancelable(true);
return mSearchDialog;
}
return super.onCreateDialog(id);
}
使用する前は、AsyncTask
代わりに別のスレッドを使用してデータをダウンロードしていました。ではonClick
、最初progressDialog
にスレッドを開始し、スレッドが終了したときにもprogressDialog
停止しました。動作は同じでした。ボタンダイアログの最初のクリックは表示されず、次に表示されました。
助けることができる人はいますか?