2017-11-16 5 views
0

클래스 이름이 인 GetDataAsyncTask으로 확장되었습니다. 다른 클래스에서 나는 GetData의에서 개체가이 코드에 나는 것을 사용Android에서 AsyncTask 클래스 취소

GetData getData = new GetData(); 
getData().execute(); 

가 나는 버튼을 클릭하면이 스레드를 중지합니다. 나는이 작업을 수행 :

나는 그것이 에있는 동안 내가 doInBackground을 실을 취소하는 경우 알고 싶어
getData().cancel(true); 

, 그것은 정지 또는 그것은 onPostExecute로 이동 한 다음 중지? onCancelled (Object)를 초래할 것이 메소드를 호출

+0

https://stackoverflow.com/questions/2735102/ideal-way-to-cancel-an-executing-asynctask – Prem

답변

0

cancel (boolean)을 호출하여 언제든지 작업을 취소 할 수 있습니다. 이 메소드를 호출하면 (자), isCancelled()에 대한 후속 호출이 true를 돌려줍니다. doInBackground (Object [])가 반환 된 후 onPostExecute (Object) 대신 onCancelled (Object)가 호출되어이 메서드를 호출 한 후 호출됩니다. 가능한 한 빨리 작업이 취소되도록하려면 가능하면 doInBackground (Object [])에서 주기적으로 isCancelled()의 반환 값을 주기적으로 확인해야합니다 (예 : 루프 내부).

자세한 내용은 :

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

그냥 좋아 : 당신의 AsyncTask를 취소하는 경우 그에 따라 UI를 업데이트 취소에 대해 다음과 같이

onPostExecute(Result result) 
{ 
} 

당신이 메소드를 오버라이드 (override) 할 수 있습니다

onCancelled(Result result) 
{ 
    // here you can handle situation according to your requirements 
} 

여기서 중요한 점은 onPostExecute에 들어가기 전에 작업을 취소 할 때마다 onPostExecute로 이동하지 않지만 onCancelled로 이동한다는 점입니다. task.cancel (true)를 호출 할 수도 있습니다. postExecute에서 필요한 수표를 적용하여 조건에 따라

-1

From the Android documentation:

doInBackground (개체 []) 복귀 후 UI 스레드에서 호출된다. 이 메서드를 호출하면 onPostExecute (Object)가 호출되지 않습니다.

따라서 onPostExecute는 호출되지 않습니다.