我正在为用户创建一个选项来暂停或计划任务。根据程序,我将其限制为2个暂停,可以并行或串行发生。我认为最简单的方法是设置两个不同的Runnable。但是,如果任务1 <任务2,并且在任务1结束之前启动了任务2,则任务1将关闭任务2。
出于争论的目的,任务1是5秒的延迟,任务2是10秒的延迟。任务2在任务1中触发1秒。任务1完成后,似乎任务2已完成。
threadNumber是我在调用任务以跟踪结果时设置的一个整数。
他们不是独立行动,而是被混在一起
我将Runnable分为两个不同的元素,由开关/案例触发。但是,这并没有像我想的那样隔离动作。
公共类MultiThreadingActivity扩展了活动{
public void StartPause1() {
hand.postDelayed(run1, delay2);
}
Runnable run1 = new Runnable() {
@Override
public void run() {
CallFinishedWithResult(threadNumber);
}
};
public void StartPause2() {
hand.postDelayed(run2, delay2);
}
Runnable run2 = new Runnable() {
@Override
public void run() {
CallFinishedWithResult(threadNumber);
}
};
}
我希望任务是异步的,同时的和独立的。
答案 0 :(得分:0)
如果您想同时做某事,则AsyncTask不是正确的答案。 AsyncTask的工作方式是按照它们在同一线程中出现的顺序运行所有任务。因此,任务1会阻止其他任何任务,甚至从开始到完成。这也意味着任务2的确切时间是不确定的。如果您同时需要多个任务,或者需要严格控制时间,请改用Thread。