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.