2014-01-22 41 views
0

我在我的片段之一中使用了asynctask。但是在完成asynctask之前按回應用程序會崩潰。我在片段的onstart方法中調用asynctask。不完整的異步任務崩潰了活動

這是我正在執行asynctask的片段onStart方法。

public void onStart() { 
    // TODO Auto-generated method stub 
    super.onStart(); 
    new FetchTableTask().execute(); 

} 

我應該在代碼中添加什麼,以便即使在asynctask不完整時應用程序也不會崩潰。

+1

發佈logcat以及屁股異步任務代碼 – Triode

+0

asynctask工作正常。我在asynctask中連接到數據庫並檢索數據。 –

+0

看看http://stackoverflow.com/a/16189317/321354 – rciovati

回答

0

當按下後退時,可能會調用取消異步任務,然後在代碼中添加條件以檢查它是否已被取消,因此它不會做任何導致您崩潰的操作。

以下是documentation的示例,請注意isCancelled()調用。

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