2016-06-13 5 views
2

私はタスクの複数のキューを作成し、同時にそれらを異なる遅延時間で実行しようとしていました。基本的には、最初は1つの実行可能オブジェクトしか持たない。Android複数のRunnableオブジェクトを同時に扱う方法

private final Runnable myQueue = new Runnable() { 
public void run() { 

    if (service != null && service.isRunning() && service.queueEmpty()) { 
     queueTasks(); 
    } 
    // run again in period defined in preferences 
    new Handler().postDelayed(myQueue,getUpdatePeriod(prefs)); 
} 

}

private void StartWExecute() {new Handler().post(myQueue);} 

は私が複数のキューが存在することになるように、私のコードを改善したい、とすべてのキューが同時に実行を開始するが、各キューは、その中のタスクに応じて異なるupdatePeriodを有することができます。このようにして、タスクをキューに並べ替え、手動で更新速度を制御できます。これをどのように達成するのですか?

ありがとうございました。

1.Declareハンドラ: Handler mWorkerHandler;
2.Createルーパー:あなたは、任意の数のメッセージを送信し、実行することができ

Thread t = new Thread() { 
      @Override 
      public void run() { 
       Looper.prepare(); 
       mWorkerHandler = new Handler() { 
        @Override 
        public void handleMessage(Message msg) { 
         Log.d(TAG, "handleMessage - what = " + msg.what); 
        } 
       }; 
       Looper.loop(); 
      } 
     }; 
     t.start(); 

3.Nowあなたはメッセージキューを使用する必要がある

+1

クラスを作成するtha 'Handler'を拡張して' handleMessage'をオーバーライドすると、それぞれ異なる遅延/タイミングを持つ 'Handler'クラスの複数のインスタンスを作成することができます。 – pskink

+0

@pskinkこんにちは、ありがとうございます。私は新しくアンドロイドになりました。より具体的になりますか?例を書いてもよろしいですか?ありがとうございました。 – Deidara

+0

[this](http://pastebin.com/pzdH6M4p)のようなものです – pskink

答えて

2

メッセージの内容に応じた操作:

mWorkerHandler.sendEmptyMessageDelayed(1, 2000); 
mWorkerHandler.sendEmptyMessage(2); 
関連する問題