2013-01-28 4 views
2

일부 정보를로드하는 동안 진행중인 AsyncTask에 ProgressDialog를 넣으려고합니다. 문제는 시작이 잘되지만 갑자기 회전이 멈추며 한 순간에 앱이 더 이상 작동하지 않는 것 같습니다. 모든 정보가로드되고 정보가 제대로 표시 될 때까지 방적이 스택됩니다. 여기에 내가 사용하고있는 AsyncTask를 수 있습니다 :AsyncTask의 progressDialog가 회전하지 않음

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(); 
    } 

} 


    } 

답변

0

을이 시도

protected class GetTask extends AsyncTask<Void, Void, Integer> { 

    protected void onPreExecute() { 
    ProgressDialog mProgressDialog = ProgressDialog.show(MainActivity.this, 
       "", "Finding cars"); 
    } 

    @Override 
    protected Integer doInBackground(Void... params) { 
     // TODO Auto-generated method stub 
     //Do your stuff 

     return 0; 
    } 

    protected void onPostExecute(Integer result) { 
     super.onPostExecute(result); 


     if (mProgressDialog.isShowing()) { 
      mProgressDialog.dismiss(); 
     } 


    } 
} 
+0

에 대한 this 링크 그것은 내게 만드는이 같은 ...이 회전을 시작하지만, 갑자기 멈추고 결국 사라질 때까지 막히고 모든 데이터가 나타납니다. –

2
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"); 
    } 
} 

확인 자세한 내용

+0

나는 이것을 시도하고 다만 아무것도하지 않는다. 하지만 처음부터 회전을 원한다면 왜 그것을 onPostExecute에 넣어야하는지 이해할 수 없습니다. 어쨌든 그것은 심지어 나타나지 않기 때문에 나는 그것이 내가 필요로하는 것이 아닐 것이라고 생각합니다. –

+0

http://stackoverflow.com/questions/6450275/android-how-to-work-with-asynctasks-progressdialog이 링크를 사용해보십시오 – Janmejoy

+0

나를 도우려는 데 고마워하지만 작동하지 않습니다 ... 실제로 오류가 발생했습니다. publicProgress를 사용하려면 응용 프로그램을 컴파일 할 수도 없습니다. –

관련 문제