gpt4 book ai didi

android - AsyncTask 中的 progressDialog 停止旋转

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

我正在尝试将 ProgressDialog 放入 AsyncTask 中并在它加载一些信息时旋转。问题是它启动良好但突然停止旋转,一瞬间似乎该应用程序不再运行。旋转只是得到堆栈,直到加载所有信息时它消失并且信息正确显示。这是我正在使用的 AsyncTask:

   public class LoadCarsTask extends AsyncTask<String, Car, List<Car>>{

private SearchFragmentActivity sma;
private ListFragment fragment;

public LoadCarsTask (ListFragment fragment){
this.fragment = fragment;
dialog = new ProgressDialog(fragment.getActivity());
}

@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
adapter = new SearchCarListAdapter(SearchCarListActivity.this.getActivity(), showedCars, showedDistance, showedReviews, showedPhotos);
dialog.setMessage("Finding Cars...");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.show();
}

public SearchFragmentActivity getSma() {
return sma;
}

public void setSma(SearchFragmentActivity sma) {
this.sma = sma;
}



@Override
protected List<Car> doInBackground(String... params) {
maxPerHour = Double.parseDouble(filterparams[0]);
maxPerKm = Double.parseDouble(filterparams[1]);
maxDistance = Double.parseDouble(filterparams[2]);
longitude = Double.parseDouble(filterparams[3]);
latitude = Double.parseDouble(filterparams[4]);
URL url;
try {
//A long calculation goes here
return cars;
}

@Override
protected void onProgressUpdate(Car... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
}

@Override
protected void onPostExecute(List<Car> result) {
super.onPostExecute(result);
SearchFragmentActivity.setCars(cars);
sfa.setUpDistances();
distance = SearchFragmentActivity.getDistances();
setUpReviews();
setUpPhotos();
while (carsCount<carsNumber && carsCount<cars.size()){
showedCars.add(cars.get(carsCount));
showedDistance.add(distance.get(carsCount));
showedPhotos.add(photos.get(carsCount));
showedReviews.add(reviews.get(carsCount));
carsCount++;
}
adapter = new SearchCarListAdapter(SearchCarListActivity.this.getActivity(), showedCars, showedDistance, showedReviews, showedPhotos);
adapter.setCurrentLocation(loc);
setListAdapter(adapter);
if(dialog.isShowing())
dialog.dismiss();
//sma.showAvailableCarsOnMap();
}

}


}

最佳答案

    private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}

protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}

protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}

检查 this链接以获取更多信息

关于android - AsyncTask 中的 progressDialog 停止旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14562905/

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