我正在使用AsyncTask來處理複雜的後臺操作(編譯要發送的日誌文件),並使用ProgressDialog顯示用戶進度。我曾嘗試使用showDialog(),但它似乎從來沒有顯示或解僱(它從來沒有被稱爲),我遵循教程如何做到這一點... 所以我使用非託管的,它不會解僱我的消息。我也想更新消息,因爲它開始編譯日誌文件(因爲它似乎滯後於此 - 或者文本視圖很長,所以它不會像它應該更新的那樣)。AsyncTask中的ProgressDialog不更新或解僱
我已經移動了我的代碼,所以它看起來像有問題(如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();
}
}
是的......就是這樣。 現在我覺得啞巴!雖然謝謝! – Mgamerz