2012-02-20 4 views
0

Что я пытаюсь сделать здесь, так это то, что я хочу вызвать веб-сервис и на основе его ответа я мог бы вызвать другой веб-сервис или начать свою деятельность. Я уже пишу веб-службу в отдельный вопрос, но проблема в том, что я вызываю активность в рабочий поток, Чтобы сделать себя более ясным, я поставил свой псевдокод.Запуск активности android из потока

if (User ID and Password present in the shared preference) THEN 
       Utils.checkauthorisation(API) //Web Service Call 
       if(respsonse is Paswordexpired) 
        erase password from DB 
        Goto (LOGIN SCREEN) 
       else if(download of images hasn't happened today)) THEN 
         UTILS.DownloadImages//Web service call 
         if(response==connectivityorOtherError) 
          Toast respective Message 
          GOTO (GALLERY SCREEN) 
         else if (response==confilicted Data) 
          Goto (CHANGES SCREEN) 
         endif 
       endif 
endif 

Я планировал показать прогресс бар и сделать все эти события в потоке, как этот

progressDialog = ProgressDialog.show(this, "Loading", 
       "Authenticating Please wait."); 

    new Thread() { 
     public void run() { 

     ///execute the pseudo code 

     Message msg = Message.obtain(); 
     msg.what = 1; 
     messagHandler.sendMessage(msg); 
     } 

    }.start(); 



      private static Handler messagHandler = new Handler() { 
    public void handleMessage(Message message) { 
     super.handleMessage(message); 
     switch (message.what) { 
     case 1: 
      progressDialog.dismiss(); 
      break; 
     default: 
      break; 
     } 
    } 

}; 

Но то, что беспокоит меня то, что я должен начать деятельность в рабочем потоке здесь. Это хорошая практика? Первоначально я думал, что мы можем только начать работу из потока пользовательского интерфейса. Каков процесс, происходящий в задней части здесь (в смысле потока)? Если это не является хорошей практикой, то какие альтернативы для реализации моего псевдокода являются ?

Благодаря

ответ

1

Launch намерение с посланием к обработчику не на вашем рабочем потоке. Обработчики выполняются в потоке пользовательского интерфейса. Если бы они не были, вы не смогли бы обновить элементы пользовательского интерфейса в обработчике.

Смежные вопросы