我试图创建多个任务队列并同时执行它们但具有不同的延迟时间。基本上,起初我只有一个可运行的对象
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,具体取决于其中的任务。通过这种方式,我可以将任务排序到队列中并手动控制更新速度。我该如何实现这一目标?
感谢。
答案 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);