AsyncTaskを使用して複雑なバックグラウンド操作(送信するログファイルのコンパイル)を処理し、ProgressDialogを使用してユーザーの進行状況を表示しています。showDialog()を使用してみましたが、表示または却下されないようで(呼び出されることはありません)、その方法のチュートリアルに従いました...したがって、管理されていないものを使用していますが、メッセージが却下されません。また、ログファイルのコンパイルを開始するときにメッセージを更新したいと思っています(遅れているように見えるため、またはテキストビューが非常に長いため、想定どおりに更新されない可能性があります)。
コードを少し動かしたので、問題があるように見えます(onProgressUpdate()など)が、それを機能させる方法がわかりません。私はこのサイトを見回しましたが、私が抱えている問題は何も発生していないようです(とにかく正確ではありません)。RunOnUiThread()が機能せず、new Thread(){}が機能せず、onProgressUpdate()が機能しません(ドキュメントはこれについて混乱しています)。
また、決して却下しません。私はリスナーを設定しました、そしてそれは決して却下しません。
誰かが私のコードの何が問題なのか知っていますか?AsyncTaskは単純なはずだと思いました。
private class BuildLogTask extends AsyncTask<Void, Void, String> {
String temp;
ProgressDialog progressdialog = new ProgressDialog(context); //variable is defined at onCreate (held as private, not static)
@Override
protected String doInBackground(Void... params) {
temp = buildLog();
logdata = temp;
publishProgress();
createLogFile();
return temp;
}
protected void onProgressUpdate() {
progressdialog.setMessage("Compiling Log File...");
}
@Override
protected void onPreExecute() {
Log.w(TAG,"Showing Dialog");
send.setEnabled(false);
ProgressDialog progressdialog = new ProgressDialog(context);
progressdialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressdialog.setMessage("Gathering Data...");
progressdialog.setCancelable(false);
progressdialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
Log.e(TAG,"Progress Dialog dismissal.");
}
});
progressdialog.show();
}
@Override
protected void onCancelled(){
Log.e(TAG,"Progress Dialog was Cancelled");
progressdialog.dismiss();
logdata=null;
}
@Override
protected void onPostExecute(String result) {
progressdialog.dismiss();
send.setEnabled(true);
previewAndSend();
}
}