2012-01-05 4 views
0

목록보기를 채우기 위해 여러 개의 이미지를 다운로드하고 모두 비동기 작업으로 분리했습니다. 이 작업에서 사용자는 버튼을 눌러 이미지가 필요없는 다른 페이지로 이동할 수 있습니다.

내가 겪는 문제점은 다음 활동으로 넘어가더라도 비동기 작업이 여전히 실행 중이며 다음 활동에서 요청해야하는 요청에 대해 httpclient가 해제되지 않는다는 것입니다.

실행중인 모든 작업에 대해 asynctask.cancel을 사용했지만 interruptedIOException을 발생시킵니다.

클라이언트를 비우는 요청을 중지하는 데 유용한 다른 방법이 있습니까?

변경 작업시 비동기 작업에서 HTTP 요청을 중지하십시오.

+0

스레드 및 소스 솔루션을 다음 stackoverflow 질문에서 구현하십시오. http://stackoverflow.com/questions/680180/whe re-to-stop-destroy-threads-in-android 서비스 -class – wurde

답변

1

이러한 상황에서 원하는 것은 취소 할 수있는 루프로 HTTP 요청을 래핑하는 것입니다. 예를 들어 this 질문을 사용하여 (이 완전한 이행) : 당신이 (cancel를 호출하여)을 onCancelled() 방법을 실행할 때

@Override 
protected Void doInBackground(Void... params) { 
    while (running) { 
    // loop your HTTP requests here 
    } 
    return null; 
} 

, 당신의 doInBackground 방법은 현재 HTTP 요청 즉시을 를 종료합니다 완료 (그리고 아니 이전).

이것은 AsyncTask을 사용하여 얻을 수있는 가장 우아한 해결책 일 수 있습니다. 또한 AsyncTask 클래스의 중단 된 예외를 잡아야 할 수도 있지만이 방법을 사용하면 충분합니다.

+0

현재 hTTP 요청을 종료 할 수있는 방법이 있습니까? – Rookie

+0

참으로 훌륭한 솔루션입니다 ... – ed209

관련 문제