如何在建立与服务器的连接期间顺利进行progressBar?

时间:2013-11-20 07:42:24

标签: android android-asynctask progress-bar

大多数如何使用publishProgress的示例都是在非常少的离散步骤(例如http://www.java2s.com/Code/Android/Network/UsingAsyncTasktodownloadabigfile.htm)中调用它,通常是httpClient.execute之前和之后的一次调用。

在我的应用程序中,我注意到在建立与服务器的连接时花费了大部分时间(比如3秒)。

所以在那段时间我的进度条看起来像是停滞不前的用户。为了给他视觉反馈,在背景中还有一些事情发生,我想在那个等待时间内为进度条设置动画。例如。从0%开始,每半秒增加2%,同时等待从httpClient.execute回来(例如高达60%)。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:2)

使用HandlerProgressBar运行时更新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()