2013-07-10 2 views
1

AsyncTask에서 Http 요청 중에 사용자가 데이터 연결을 끊는 상황을 처리하려고합니다. 현재 AsyncTask는 이런 일이 발생하고 앱이 그냥 멈 추면 실행을 끝내지 않습니다. 나는 isCancelled()를 체크 할조차 할 수 없다. 왜냐하면 Http 요청은 하나의 함수 호출에서 멈춰 버리기 때문에 루프 나 아무것도 구현할 수 없다.AsyncTask에서 네트워크 호출 취소 중

나는 UI 스레드에서 다음을 사용하고 있지만 작업이 작업 내에서 취소 된 경우 확인하는 방법을 알아낼 수 없습니다 : 처리를 중지하기 위해

task = new LoginTask(); 
    task.execute(this, mUsername, mPassword); 
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      if (task != null && task.getStatus() == AsyncTask.Status.RUNNING) 
      { 
       task.cancel(true); 
      } 
     } 
    }, 5000); 
+0

비동기 작업을 통해 위치를 열기 전에 위치를 핑 (ping) 하시겠습니까? 127.0.0.1을 제외한 다른 인터페이스를 사용할 수 있는지 확인하십시오. – Shark

+1

데이터를받는 방법을 잘 모르지만 대부분의 네트워크/http 호출은 시간 초과 설정을 지원합니다. 예를 들어'HttpConnectionParams '. –

+0

@Shark 전화를 걸기 전에 활성 연결을 테스트하지만 전화 걸기에는 약 5 초 정도 걸리고 사용자는 그 시간에 연결을 끊을 수 있습니다. – ashishduh

답변

0

KSoap 2는 Java로 작성되었으므로, 하나의 클래스를 추상화하고 HttpConnection에서 수동으로 시간 초과를 설정하는 옵션이 있습니다.

이전 논의를 토대로, 연결에서 시간 초과를 설정하지 않는 방법을 무시하고 자신의 메서드 및 시간 초과 된 연결로 바꿔야 할 것입니다. KSoap 덕분에 관리가 가능해야합니다 open source! 행운을 빕니다.

+0

asynctask를 취소하는 방법에 대한 좋은 소식 http://www.quicktips.in/correct-way-to-cancel-an-asynctask-in-android/ –

0

, 당신은 것 doInBackground() 내에서 isCancelled()에 대한 검사를 수행해야합니다. doInBackground에서 합리적인 장소가있는 경우 if 문을 추가 할 수 있습니다. 그렇지 않으면 http 연결에서 시간 초과 설정을 고려해야합니다.

관련 문제