大多数如何使用publishProgress
的示例都是在非常少的离散步骤(例如http://www.java2s.com/Code/Android/Network/UsingAsyncTasktodownloadabigfile.htm)中调用它,通常是httpClient.execute
之前和之后的一次调用。
在我的应用程序中,我注意到在建立与服务器的连接时花费了大部分时间(比如3秒)。
所以在那段时间我的进度条看起来像是停滞不前的用户。为了给他视觉反馈,在背景中还有一些事情发生,我想在那个等待时间内为进度条设置动画。例如。从0%开始,每半秒增加2%,同时等待从httpClient.execute
回来(例如高达60%)。
非常感谢任何建议。
答案 0 :(得分:2)
使用Handler
在ProgressBar
运行时更新execute()
。例如,onPreExecute()
的{{1}}开始AsyncTask
,如下所示:
Runnable
在private static final int UPDATE_STEP = 500; // My convention is to update the progress with 1 for every 500ms
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
progressBar.setProgress(progressBar.getProgress() + 1);
mHandler.postDelayed(this, UPDATE_STEP);
}
}
@Override
public void onPreExecute() {
mHandler.postDelayed(mRunnable, UPDATE_STEP);
}
方法中,doInBackground()
通话完成后:
execute()