Android AsyncTask onProgressUpdate不起作用

时间:2013-07-27 05:48:32

标签: java android android-asynctask progress-bar

我在课堂上有一个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();
}

1 个答案:

答案 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;
    }