Android如何同时处理多个Runnable对象

时间:2016-06-13 14:06:39

标签: java android multithreading

我试图创建多个任务队列并同时执行它们但具有不同的延迟时间。基本上,起初我只有一个可运行的对象

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 个答案:

答案 0 :(得分:3)

您需要使用 MessageQueue

1.Declare a Handler:  Handler mWorkerHandler;
2.创建一个Looper:

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.现在您可以根据消息内容发送任何号码消息并执行操作:

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