2014-01-22 2 views
0

제 조각 중 하나에서 asynctask를 사용하고 있습니다. 하지만 asynctask가 끝나기 전에 다시 누르면 앱이 다운됩니다. 조각의 시작 방법에서 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; 
    } 
관련 문제