2014-10-28 6 views
0

5 초마다 서버로부터 상태를 받아야합니다. AsyncTask를 사용하여이 작업을 수행하고 있습니다. 5 초마다 들어 이전 요청의 응답이 서버에서 반환 된 경우에만 새 요청 호출

내가 여기
myListTimer = new Timer(); 
    myListTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 

      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 

        updateMyList(); 

       } 
      }); 

     } 

    }, 0, 5000); 

을 사용하여 요청 updateMyList 메소드 호출 AsyncTask를하고 그것은 잘 작동합니다. 그러나 언젠가는 네트워크 문제로 5 초 안에 응답을 얻지 못했고 타이머는 새로운 응답을 다시 요청합니다. 그래서 내가 원하는 것은 서버로부터 이전의 응답이 리턴 될 때에 만 요청할 것입니다. 이전 요청 응답이 없으면 새 응답을 요청하지 않습니다.

+0

[**이 될 수 있습니다 **] (http://nobalg.tumblr.com/post/98543748225/android-asynctasks-one-after-the-other) – nobalG

+0

마지막 응답을 저장 한 다음 조건을 작성하십시오. 실패하면 이전 응답을로드합니다. – Naufal

답변

2
boolean receivedResponse = false; 

myListTimer = new Timer(); 
    myListTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 

      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        if (!receivedResponse) { 
         updateMyList(); 
        } 
       } 
      }); 

     } 

    }, 0, 5000); 

응답을 수신 할 때 호출되는 코드에서 receivedResponse을 true로 설정하십시오.
다음 요청을 준비 할 때 다시 false로 설정하십시오.

관련 문제