gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:27:00 25 4
gpt4 key购买 nike

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

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

所以在那段时间里,我的进度条对用户来说似乎停滞了。为了给他视觉反馈,让他知道后台还有一些事情在进行,我想在等待期间为进度条添加动画效果。例如。从 0% 开始,每半秒增加 2% 的进度,同时等待从 httpClient.execute 返回(例如高达 60%)。

如果有任何建议,我将不胜感激。

最佳答案

execute() 运行时,使用 Handler 更新 ProgressBar。例如,在 AsyncTaskonPreExecute() 中启动一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com