我试图创建多个任务队列并同时执行它们,但延迟时间不同。基本上,一开始我只有一个可运行的对象
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,这取决于其中的任务。通过这种方式,我可以将任务排序到队列中并手动控制更新速度。我如何实现这一目标?
谢谢。
最佳答案
您需要使用MessageQueue:
1.声明一个处理程序:
处理程序 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);
关于java - Android如何同时处理多个Runnable对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37791852/