作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大多数关于如何使用 publishProgress
的示例都在非常少的离散步骤中调用它(例如 http://www.java2s.com/Code/Android/Network/UsingAsyncTasktodownloadabigfile.htm),通常在 httpClient.execute
之前调用一次,在 httpClient.execute
之后调用一次。
在我的应用程序中,我注意到大部分时间(比如 3 秒)都花在建立与服务器的连接上。
所以在那段时间里,我的进度条对用户来说似乎停滞了。为了给他视觉反馈,让他知道后台还有一些事情在进行,我想在等待期间为进度条添加动画效果。例如。从 0% 开始,每半秒增加 2% 的进度,同时等待从 httpClient.execute
返回(例如高达 60%)。
如果有任何建议,我将不胜感激。
最佳答案
在 execute()
运行时,使用 Handler
更新 ProgressBar
。例如,在 AsyncTask
的 onPreExecute()
中启动一个 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()
调用完成后:
mHandler.removeCallbacks(mRunnable);// cancel the manual ProgressBar updates
int remainderProgress = 100 - progressBar.getProgress(); // I assumed that 100 is the max progress
关于android - 如何在与服务器建立连接期间使 progressBar 顺利进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090102/
我是一名优秀的程序员,十分优秀!