我在GetAllUsers();
中有onCreate
,我有这个
private void GetAllUsers() {
(new LoadingUsers(this)).execute();
}
然后我有了这个
private class LoadingUsers extends AsyncTask < Void, Integer, String > {
String TAG = getClass().getSimpleName();
AlertDialog.Builder builderSingle;
ArrayAdapter < String > arrayAdapter;@
SuppressWarnings("unused")
Context mContext;
public LoadingUsers(Context context) {
super();
mContext = context;
}
protected void onPreExecute() {
// prgDialog.show();
// builderSingle = new
Log.d(TAG + " PreExceute", "On pre Exceute......");
}
protected String doInBackground(Void...arg0) {
Log.d(TAG + " DoINBackGround", "On doInBackground...");
return null;
}
protected void onProgressUpdate(Integer...a) {
super.onProgressUpdate(a);
Log.d(TAG + " onProgressUpdate", "You are in progress update ... " + a[0]);
}
protected void onPostExecute(String result) {
// prgDialog.hide();
Log.d(TAG + " onPostExecute", "" + result);
MainActivity.this.pd.dismiss();
}
}
&#13;
我想在builderSingle = new AlertDialog.Builder(MainActivity.this);
内加protected void onProgressUpdate(Integer... a) {
AsyncHttpClient client = new AsyncHttpClient();
,但遗憾的是onProgressUpdate根本没有被调用。我知道这是因为日志没有显示。除log
我还有
onProgressUpdate
都会显示
@
Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "On Destroy .....");
}
@
Override
protected void onPause() {
super.onPause();
Log.i(TAG, "On Pause .....");
}
@
Override
protected void onRestart() {
super.onRestart();
Log.i(TAG, "On Restart .....");
}
@
Override
protected void onResume() {
super.onResume();
Log.i(TAG, "On Resume .....");
}
@
Override
protected void onStart() {
super.onStart();
Log.i(TAG, "On Start .....");
}
@
Override
protected void onStop() {
super.onStop();
Log.i(TAG, "On Stop .....");
}
OnStart
和OnResume
也正在记录。
为什么没有调用onProgressUpdate? 如何正确调用onProgressUpdated?
Update
onPostExecute
不是的情况下,也会调用 onProgressUpdate
答案 0 :(得分:3)
onProgressUpdate
(在后台线程中)调用publishProgress
时,都会在主线程上调用 doInBackground
。如果您选择使用此工具,则为方便您使用。如果您的任务涉及某种循环,那么它主要是有用的,在这种情况下,您可以在每次迭代时调用publishProgress
。如果您的任务只调用其他一些代码,并且所有处理都发生在您无法控制的地方,那么publishProgress
/ onProgressUpdate
机制对您没有用。在这种情况下,您可能决定在开始任务之前显示不确定的进度条,然后在完成后隐藏不确定的进度条。
答案 1 :(得分:0)
您的代码可能需要以下功能:
@Override
protected void onProgressUpdate(Integer a) {
super.onProgressUpdate(a);
}
答案 2 :(得分:0)
应该很简单
private class LoadingUsers extends AsyncTask< Void, Integer, String > {
private ProgressDialog dialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = ProgressDialog.show(getContext(), null, "Loading users...", false);
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
dialog.setProgress(values[0]);
}
@Override
protected String doInBackground(Void... params) {
// Doing something in loop
int max = 1024;
for (int i = 0; i < max; i++) {
int percentageCompleted = i*100/max;
publishProgress(percentageCompleted);
}
return "";
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
dialog.dismiss();
}
}
如果您不了解此代码是什么,请告诉我。
答案 3 :(得分:0)
覆盖该功能而不是仅仅复制过去, 使用关键字@Override