Como tratar falha de transmissão?

Como devo proceder para tratar uma possivel falha de transmissão durante a troca de dados entre o meu aplicativo móvel e um Webservice? Exemplo: O usuário ativa a troca de dados utilizando 3G e no meio do processo a conexão atenua muito ou até mesmo chega a parar… Como contornar/tratar essa possivel situação?

Grato e aguardo qualquer orientação.

creio que com um timeout, bem fácil fazer um com o CountDownTimer.

Como faço isso? Será que o amigo teria um pequeno exemplo de como implementar essa solução?

Grato e aguardo retorno.

isWebServiceResponding é o um metodo para receber uma resposta de um webservice, com aqueles códigos de sempre (404,200, etc)

[code]
private String mUrl = "http://url"
private CountDownTimer mCountDown;
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable(){

@Override
public run(){
    if(isWebServiceResponding(mUrl)){
    if(mCountDown!= null){
    mCountDown.cancel();
    mCountDown = null;
    }
	 
  }else{
    if(mCountDown == null){
    mCountDown  = new  CountDownTimer(15000,15000){
           public void onTick (long millisUntilFinished) {
           }
           public void onFinish(){            
                //TimeOutConcluido, fazer algo

           }			
        }
    }
 }
 
 if(mHandler!=null) mHandler.postDelayed(mRunnable, 1000);

}

private void startHandler(){
if(mHandler!=null) mHandler.post(mRunnable);
}

private boolean isWebServiceResponding(String url){

        WebClient client = WebClient.create(url);
        Response response = client.get();

        if (response.getStatus()==200) {
             return true;
        } else {
             return false;
        }

}[/code]

[quote=fabriciov]isWebServiceResponding é o um metodo para receber uma resposta de um webservice, com aqueles códigos de sempre (404,200, etc)

[code]
private String mUrl = "http://url"
private CountDownTimer mCountDown;
private Handler mHandler = new Handler();
private Runnable mRunnable = new Runnable(){

@Override
public run(){
    if(isWebServiceResponding(mUrl)){
    if(mCountDown!= null){
    mCountDown.cancel();
    mCountDown = null;
    }
	 
  }else{
    if(mCountDown == null){
    mCountDown  = new  CountDownTimer(15000,15000){
           public void onTick (long millisUntilFinished) {
           }
           public void onFinish(){            
                //TimeOutConcluido, fazer algo

           }			
        }
    }
 }
 
 if(mHandler!=null) mHandler.postDelayed(mRunnable, 1000);

}

private void startHandler(){
if(mHandler!=null) mHandler.post(mRunnable);
}

private boolean isWebServiceResponding(String url){

        WebClient client = WebClient.create(url);
        Response response = client.get();

        if (response.getStatus()==200) {
             return true;
        } else {
             return false;
        }

}[/code][/quote]

Entendido. Agora como esse exemplo fica bem mais claro para eu entender e tentar por a coisa em prática.

Muito obrigado pela sua atenção.