2012-06-29 3 views
-1

AsyncTask을 사용하여 http request을 만들고 있는데 내가 원하는 것은 로그 아웃 할 때 AsyncTask이 멈춰야한다는 것입니다. 그래서 나는 onStop()cancel(true)라고 부릅니다. cancel(true)으로 전화하면 아직 시작되지 않은 요청은 취소되지만 문제는 수행 작업이 취소되었는지 여부를 확인하는 isCancelled()이 호출되지 않는다는 것입니다. 나는 doInBackgroud() 메서드에서 isCancelled()을 확인하고 있습니다. AsyncTask 실행중인 AsyncTask를 중지하는 방법이 있습니까? 다음은 시나리오입니다.onCancelled()가 호출되었지만 isCancelled()가 호출되지 않습니다

class AsyncClass extends AsyncTask<>{ 

    @Override 
    protected String doInBackground(Void... params) 
     { 
      if(isCancelled()) 
       { 
       Log.d("isCancelled", iscancelled()); 
       } 
      //call the webservice 

     } 
    } 

지금 호출되지 않습니다() 나는

if(asyncTaskObject!=null){ 
    asyncTaskObject.cancel(true); 
     asyncTaskObject=null; 
} 

를 호출하고 있습니다 그러나 로그 문 내부의 isCancelled 곳에서 다른 클래스가있다.

+1

마지막 편집 후에는 사용자가 무엇을 요구하는지 완전히 명확하지 않습니다. – Robert

+0

Robert가 맞습니다. 나는 너를 의미한다고 생각할 수있다. 이것 좀 봐 : http://stackoverflow.com/questions/2735102/ideal-way-to-cancel-an-executing-asynctask – Kuffs

+0

http://stackoverflow.com/questions/2531336/asynctask-wont-stop-even- 활동이 끝났을 때 파괴되었습니다. 이것을 확인할 수 있습니까? – Rookie

답변

1

isCancelled()이 Android 자체에서 실행되어야하는 이유는 무엇입니까? 이것은 코드가 작업 상태를 쿼리 할 수있게 해주는 getter 메소드입니다.

+0

올바르지 않은 경우 AsyncTask를 중지 할 수 있습니다. 취소 (true)를 호출하면 인터럽트가 백그라운드 스레드로 보내져 인터럽트 가능한 작업을 도울 수 있습니다. 그렇지 않으면 doInBackground() 메소드에서 isCancelled()를 정기적으로 확인해야합니다. ...이 romain 남자에 의한 코멘트 – Rookie

+1

귀하의 의견은 모순입니다. 먼저 내가 틀렸다는 것을 말합니다 - 나중에 isCanceled()는 내가 작성한 코드 인 자신의 코드에서 호출되어야한다고 말합니다. – Robert

+0

내 질문을 제대로 읽지 않았다고 생각합니다. – Rookie

관련 문제