2016-06-13 56 views
2

我試圖創建多個任務隊列並同時執行它們,但延遲時間不同。基本上,起初我只有一個可運行的對象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

創建一個class tha t擴展一個'Handler'並覆蓋它的'handleMessage',現在你可以創建你的'Handler'類的多個實例,每個實例都有不同的延遲/時序 – pskink

+0

@pskink嗨,謝謝你的回覆。我對android很陌生。你可以再詳細一點嗎?可能請寫一個例子嗎?謝謝。 – Deidara

+0

像[this](http://pastebin.com/pzdH6M4p) – pskink

回答

2

您需要使用的MessageQueue

1.Declare處理程序: Handler mWorkerHandler;
2.創建一個活套:

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您可以發送任意數量的消息,並執行根據郵件內容操作:

mWorkerHandler.sendEmptyMessageDelayed(1, 2000); 
mWorkerHandler.sendEmptyMessage(2);