这是我的问题。我注意到我的AsyncTask
无效。我的意思是,即使我运行此代码:
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progress.setText(values[0] + "%");
}
@Override
protected Void doInBackground(Void... voids) {
for (i = 0; i <= 100; ++i) {
publishProgress(i);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i("progress", i + "");
}
return null;
}
它似乎根本没有反义词,在5秒(或更多)之后,我的进度alomost立即从0到100%,即使它应该在每次调用publishProgress()之间等待10ms。这是我缺少的东西吗?
答案 0 :(得分:0)
我认为是一个线程问题,因为AsyncTask会自动为您创建一个新线程,所以您在doInBackground()中所做的一切都在另一个线程上。 因此,开始“睡眠”onPreExecute()并完成onPostExecute()
答案 1 :(得分:0)
您呼叫Thread.sleep(10);
10毫秒,导致100 * 10 = 100毫秒(1秒)。它将完成所有进展。它会在很短的时间内取得全面进展。
您可以增加Thread.sleep(1000)
如果您想要查看明确的进度,或者您可以在onProgressUpdate中打印Log.currentTimeInMillis()日志以查看进度。
确保已调用asyncTask.execute()来运行AsyncTask。