2012-12-04 1 views
1

ActivityB Oncreate()에서 비동기 작업으로 만듭니다. 그 작업에서 무한 루프를 실행 중입니다 doInBackground() 이전 활동으로 이동하면서 activityB로 다시 이동하는 동안 다른 비동기 작업이 생성되었습니다.doInBackground가 실행되는 동안 asynctask를 중지 할 수 있습니까?

내 문제 루프가 실행되는 동안 두 무한입니다. 이전 활동으로 이동할 때 비동기 작업을 중지 할 수 있습니까?

public Void doInBackground(....) { 

    while(!isCancelled()) { 
     ...endless activity... 
    } 

    return null; 
} 
+0

루프 상태에'! isCancelled()''를 넣으십시오. 다음에 "asyncTask.cancel (boolean)"을 호출하십시오. '' –

+0

어디서 asyncTask.cancel (boolean);을 호출해야합니까? OnBackPressed 함수? – Vignesh

+0

고마워 트라팔가, 그 멋진 작동합니다. – Vignesh

답변

2

물론이 ... isCancelled()을 확인하십시오.

일반적으로 AsyncTask는 onCancelled()를 실행하고 완료되면 onPostExecute()를 실행하지 않습니다.

내가 앱의 디자인을 검토하고이 조건이 발생보다는 비동기 실행 취소하지 않도록 다시 그것을 일 것

http://developer.android.com/reference/android/os/AsyncTask.html

(섹션 '비동기 작업을 취소')에 문서를 참조하십시오 작업.

+0

고마운 323go, 그 멋진 작동합니다. – Vignesh

2

Cancel() 방법이 있지만, 반드시 백그라운드 프로세스의 실행을 중지하지 않습니다 cancel(boolean mayInterruptIfRunning) 전화 :

관련 문제