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?
creio que com um timeout, bem fácil fazer um com o CountDownTimer.
aprendiz_ce
Como faço isso? Será que o amigo teria um pequeno exemplo de como implementar essa solução?
Grato e aguardo retorno.
fabriciov
isWebServiceResponding é o um metodo para receber uma resposta de um webservice, com aqueles códigos de sempre (404,200, etc)
privateStringmUrl="http://url"privateCountDownTimermCountDown;privateHandlermHandler=newHandler();privateRunnablemRunnable=newRunnable(){@Overridepublicrun(){if(isWebServiceResponding(mUrl)){if(mCountDown!=null){mCountDown.cancel();mCountDown=null;}}else{if(mCountDown==null){mCountDown=newCountDownTimer(15000,15000){publicvoidonTick(longmillisUntilFinished){}publicvoidonFinish(){//TimeOutConcluido, fazer algo}}}}if(mHandler!=null)mHandler.postDelayed(mRunnable,1000);}privatevoidstartHandler(){if(mHandler!=null)mHandler.post(mRunnable);}privatebooleanisWebServiceResponding(Stringurl){WebClientclient=WebClient.create(url);Responseresponse=client.get();if(response.getStatus()==200){returntrue;}else{returnfalse;}}
aprendiz_ce
fabriciov:
isWebServiceResponding é o um metodo para receber uma resposta de um webservice, com aqueles códigos de sempre (404,200, etc)
privateStringmUrl="http://url"privateCountDownTimermCountDown;privateHandlermHandler=newHandler();privateRunnablemRunnable=newRunnable(){@Overridepublicrun(){if(isWebServiceResponding(mUrl)){if(mCountDown!=null){mCountDown.cancel();mCountDown=null;}}else{if(mCountDown==null){mCountDown=newCountDownTimer(15000,15000){publicvoidonTick(longmillisUntilFinished){}publicvoidonFinish(){//TimeOutConcluido, fazer algo}}}}if(mHandler!=null)mHandler.postDelayed(mRunnable,1000);}privatevoidstartHandler(){if(mHandler!=null)mHandler.post(mRunnable);}privatebooleanisWebServiceResponding(Stringurl){WebClientclient=WebClient.create(url);Responseresponse=client.get();if(response.getStatus()==200){returntrue;}else{returnfalse;}}
Entendido. Agora como esse exemplo fica bem mais claro para eu entender e tentar por a coisa em prática.