Как избежать ответа ANR в Android, когда есть задержка на сервере? - PullRequest
2 голосов
/ 29 февраля 2012

Я новичок в Android, но знаю немного о Java и Java EE. При связи с сервером (веб-сервис) он отлично работает с ответом, который я получаю от него.Но если задержка превышает 5 секунд, она достигает значения ANR.Теперь мой вопрос заключается в том, как проверить с помощью моих функций Java, чтобы узнать, отвечает сервер или нет.Любые идеи в этом ??

Даже некоторые связанные примеры помогут мне.

Фрагмент кода

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    public void run() { 
             // Problem is if Server is not Working , it delays and the UI wents to ANR 
              if(  sendToWebservice(String_to_send)=="fromWebservice") {
                Toast.makeText(context, "Connected", 500).show();

              }
             else {
                Toast.makeText(context, "Not Connected,Try again ", 500).show();
                finish();
            }
     } 
    }, 5000); 

Дополнительная информация: я использую jax.ws для создания webservice & ksoap api в Android.Заранее спасибо.

Редактировать

if(  sendToWebservice(String_to_send).equalIgnorecase("fromWebservice") instead of ==

Я пропустил это, когда включил в синтаксис здесь .. !!

1 Ответ

2 голосов
/ 29 февраля 2012

Прежде всего, Это условие должно быть,

if(sendToWebservice(String_to_send).equals("fromWebservice")) 

Теперь для ANR ,

Вы можете указать тайм-аут ответа в своем HTTP-запросе , поэтому, если есть задержка по времени, вы получите ответ тайм-аута с сервера. Также, если это возможно, при любом вызове веб-службы отобразится диалоговое окно прогресса . в потоке пользовательского интерфейса, а ваш веб-сервис - в другом рабочем потоке.

...