在Android Studio中,当执行某些任务需要耗费时间,需要使用进度条来提供用户体验,但是有时在延迟时,进度条却无法显示。此时,我们可以尝试在代码中使用异步处理,这样可以将长时间的任务放在后台线程中进行,从而避免阻塞UI线程,并随时更新进度条的状态。以下是示例代码,展示了如何在异步任务中更新进度条:
private class LoadTask extends AsyncTask
public LoadTask(ProgressBar progressBar) {
mProgressBar = progressBar;
}
@Override
protected Void doInBackground(Void... params) {
while(progress < 100) {
progress += 5;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(progress);
}
return null;
}
@Override
protected void onPostExecute(Void result) {
Toast.makeText(getActivity(),"Load Finished!", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPreExecute() {
Toast.makeText(getActivity(), "Start Loading",Toast.LENGTH_SHORT).show();
}
@Override
protected void onProgressUpdate(Integer... values) {
mProgressBar.setProgress(values[0]);
}
}
在Activity中,我们可以这样调用异步任务和进度条:
ProgressBar progressBar = findViewById(R.id.progressBar); LoadTask loadTask = new LoadTask(progressBar); loadTask.execute();
这样,即使在延迟时,进度条也可以正常显示更新。