我正在执行一个任务,该任务执行10秒钟,时间为1秒,没有延迟,另一个任务是在完成第一个任务时,执行30秒,时间为5秒.
另外,按下按钮时,我需要取消两个任务.
我不知道哪个是解决此问题的最佳方法.
>我尝试了基本线程,但是会阻塞GUI直到两个任务都完成
执行
>我尝试了ExecutorService executorService =
Executors.newSingleTheadExecutor()但在这种情况下
executor.submit(runnable)一个接一个地执行,但不执行
每个定期
>我以固定利率尝试了定期执行人,但是
预定执行器是异步的,我确实知道如何使用
executorService.scheduleAtFixedrate(runnable1, delay, period); //and after finished to runexecutorService.scheduleAtFixedrate(runnable2, delay, period);
任何反馈表示赞赏.
最好的祝福,
奥雷利亚
解决方法:
您可以使用CountDownTimer类.我模拟了一个简单的演示.
我创建了几个Runnable任务来模拟VolumeUp和VolumeDown函数.
当timerUp启动时,它会在给定的时间内递增计数.完成timerUp计数后,在onFinish中启动timerDown.它倒计时.
public class TimerActivity extends AppCompatActivity { private TextVIEw out; int value = 0; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_timer); out = (TextVIEw) findVIEwByID(R.ID.out); setText(value); timerUp.start(); } CountDownTimer timerUp = new CountDownTimer(10000, 1000) { @OverrIDe public voID onTick(long millisUntilFinished) { runnable1.run(); } @OverrIDe public voID onFinish() { timerDown.start(); } }; CountDownTimer timerDown = new CountDownTimer(10000, 1000) { @OverrIDe public voID onTick(long millisUntilFinished) { runnable2.run(); } @OverrIDe public voID onFinish() { Log.e("done", "onFinish"); } }; private voID setText(final int value){ runOnUiThread(new Runnable() { @OverrIDe public voID run() { out.setText(String.valueOf(value)); } }); } Runnable runnable1 = new Runnable() { @OverrIDe public voID run() { value += 10; setText(value); } }; Runnable runnable2 = new Runnable() { @OverrIDe public voID run() { value -= 10; setText(value); } };}
可以通过调用取消计时器,
timerUp.cancel();timerDown.cancel();
您可能需要稍微调整一下时间值.希望你能明白.祝好运. 总结
以上是内存溢出为你收集整理的当另一个重复任务完成时,android运行重复任务全部内容,希望文章能够帮你解决当另一个重复任务完成时,android运行重复任务所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)