2012-02-20 7 views
0

私がここでやろうとしているのは、私がウェブサービスを呼びたいと思って、そのレスポンスに基づいて別のウェブサービスを呼び出すか、アクティビティを開始するということです。別のスレッドを使用していますが、問題は私がワーカースレッドでアクティビティを呼び出すことです。 自分自身をより明確にするために、疑似コードを入れました。スレッドからアンドロイドのアクティビティを開始する

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; 
     } 
    } 

}; 

のようなスレッド内のすべてのこれらのイベントを行うことを計画していた。しかし、私を妨げる何かが私はワーカースレッドでの活動を開始する必要がありますここに。 これは良い方法ですか?私は当初、UIスレッドからのみアクティビティを開始できると考えました。スレッドの意味で、ここでバックエンドで起こっているプロセスは何ですか?これが良い練習でない場合、私の擬似コードを実装する他の代替手段はですか?

おかげ

答えて

1

を起動していない、あなたのワーカースレッドでハンドラへのメッセージと意図。ハンドラはUIスレッド上で実行されます。そうでなければ、HandlerのUI要素を更新することはできません。

関連する問題