2011-07-01 11 views
0

私は、UIスレッドとmyCustomThreadの間でメッセージを送信できるハンドラを備えたアクティビティ(myActivity)とスレッド(MyThread)を持っています。 今、MyActivityからMyThreadスレッドのALIVEメッセージを定期的に(10秒間)呼びたいと思います。どうすればそれを達成できますか?スレッド内の定期的なメッセージ

MyActivity:

public void onResume() 
{ 
    super.onResume(); 
    this.thread     = new MyThread(activityHandler); 
    this.threadHandler = this.thread.gethandler(); 

    threadMessage   = this.threadHandler.obtainMessage(); 
    threadMessage.what = AUTH; 
    this.threadHandler.sendMessage(threadMessage); 
} 

MyThread:

@Override

public void run() 
{ 

     Looper.prepare(); 

     this.threadHandler = initHandler(); 

     this.message  = this.activityHandler.obtainMessage(); 
     this.message.what = CONNECTED; 
     activityHandler.sendMessage(this.message); 

     Looper.loop(); 

} 

private Handler initHandler() 
{ 
    return new Handler() { 

     public void handleMessage(Message msg) 
     { 
      switch(msg.what) 
      { 
       case AUTH : 
       { 
        auth(); 
        break; 
       } 

       case ALIVE : 
       { 
        sendAlive(); 
        break; 
       } 
      } 
     } 
    }; 
} 

おかげであなたの助けのために

答えて

0

私は最終的に解決ウィットを見つけますh sendEmptyMessageDelayed(ALIVE,10000)

私は一度、UIスレッドからALIVEを呼び出し、sendAlive()メソッドの最後には、遅延ミリ秒をスレッド自体に送信して、Xミリ秒後にALIVEを再呼び出しします。

このソリューションでは、新しいスレッドまたはタイマーは必要ありません。

0

正解は本当にあなたが一緒に入れしようとしているものに依存し...

Thisが遅れポストを使用する方法だけでなく、タイマーのアクションを実行するためのウォークスルー(の好ましい方法でありますタイマー用のスレッドを使用しないためスケジュールで実行されます)。それは良い書き留めであり、その理由を含んでいます。

これが役に立ちます。

+0

遅れたポストは良い解決策でした。私はタイマーなしでそれを使用している(私の前の答えを参照してください)、それは素晴らしい動作します。ありがとう – grunk

関連する問題