AsyncTask无法正常工作

时间:2018-05-24 08:00:49

标签: android android-asynctask

这是我的问题。我注意到我的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。这是我缺少的东西吗?

2 个答案:

答案 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。