Android 4.4.2 Async Task的onProgresUpdate方法不起作用

时间:2014-07-26 18:04:02

标签: android android-asynctask

我使用Async任务更新我的活动数据。它适用于所有设备,直到日期,但在Android 4.2.2 KitKat AsyncTask的onProgressUpdate方法不起作用。

以下是AsyncTask的参考代码

class MyAsync extends AsyncTask<String, String, String>
{
    boolean flag = true;
    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub

        while(flag)
        {
            // do background Task

            //publishProgress
            publishProgress("");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(String... values) {
        // TODO Auto-generated method stub
        super.onProgressUpdate(values);

        //Update UI
    }
}

这段代码我如何启动AsyncTask

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
        asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    else
        asyncTask.execute(params);

2 个答案:

答案 0 :(得分:1)

当版本为Honeycomb或更高版本时,您没有将参数传递给任务。试试这个:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
    asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
else
    asyncTask.execute(params);

有关详细信息,请参阅此链接:http://developer.android.com/reference/android/os/AsyncTask.html#executeOnExecutor%28java.util.concurrent.Executor,%20Params...%29

答案 1 :(得分:-1)

永远不会调用doInBackground()。