我在课堂上有一个AsyncTask
。我希望它在执行过程中显示进度。但它不是打印日志。
private void registerBackground() {
new AsyncTask<Void, Integer, String>() {
@Override
protected String doInBackground(Void... params) {
Log.v("TAGGG", "IN doInBackground");
msg = "Error: ";
return msg;
}
@Override
protected void onProgressUpdate(Integer... progress) {
super.onProgressUpdate(progress);
Log.v("TAGGG", "Progress: " + progress[0] + "%");
}
@Override
protected void onPostExecute(String msg)
{
Log.v("TAGGG", msg);
}
}.execute();
}
答案 0 :(得分:8)
您必须使用publishProgress()方法:http://developer.android.com/reference/android/os/AsyncTask.html#publishProgress(Progress...)
可以从doInBackground(Params ...)调用此方法进行发布 在后台计算仍然存在的情况下更新UI线程 运行。每次调用此方法都会触发执行 UI线程上的onProgressUpdate(Progress ...)。 onProgressUpdate(Progress ...)将记录如果任务已被调用 取消。
@Override
protected String doInBackground(Void... params) {
Log.v("TAGGG", "IN doInBackground");
msg = "Error: ";
int i = 0;
while (i <= 50) {
try {
Thread.sleep(50);
publishProgress(i);
i++;
}
catch (Exception e) {
Log.i(TAGGG, e.getMessage());
}
}
return msg;
}