Я использую AsyncTask для обработки сложных фоновых операций (компиляция файла журнала для отправки), и я использую ProgressDialog, чтобы показать прогресс пользователя. Я пытался использовать showDialog (), но он никогда не показывал и не отклонял (он никогда не вызывался), и я следовал инструкциям о том, как это сделать ...
Поэтому я использую неуправляемые, и это не отклонит мое сообщение. Я также хочу обновить сообщение, так как оно начинает компилировать файл журнала (так как оно кажется там запаздывающим - или, возможно, текстовое представление просто очень длинное, поэтому оно не обновляется, как положено).
Я немного переместил свой код, чтобы он выглядел так, как будто есть проблемы (например, onProgressUpdate ()), но я не знаю, как заставить его работать. Я осмотрел этот сайт, и, похоже, у меня нет проблемы (не совсем так). RunOnUiThread () не работает, новый 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();
}
}