我需要在android studio中创建重复计时器的帮助

evrscar2  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(347)

很好的一天。我想重复一个计时器(在android studio中)一定次数。计时器的持续时间也应更改(每次后续运行时,应从“mylist”中获取新的持续时间)。不幸的是,我的循环不起作用,我无法打开此循环所在的活动。以下是我的尝试:

  1. for (int g = 0; g < 10; g++) {
  2. int numberInt = Integer.parseInt(myList.get(g));
  3. CountDownTimer Timer1 = new CountDownTimer(numberInt * 1000, 1000) {
  4. public void onTick(long millisUntilFinished) {
  5. textView.setText("" + millisUntilFinished / 1000);
  6. i = i + 100 / numberInt;
  7. }
  8. public void onFinish() {
  9. i = 0;
  10. }
  11. };
  12. Timer1.start();
  13. }

谁能告诉我,我的错在哪里?非常感谢你!
编辑以更好地理解:
我想创建一个重复10次(或更多)的计时器。我创建了一个arraylist,在其中输入了10个不同的数字。计时器的时间应与arraylist中第一次运行的项1相对应,与第二次运行的项2相对应,依此类推。第二个计时器应该等待第一个计时器完成(因此我不希望所有计时器同时运行,而是逐个运行)。我也不想只在timer1的onfinish()中创建一个timer2,然后在timer2的onfinish()中创建一个timer3。。。但我希望它可以工作无限次(因此计时器应该自动创建)。

798qvoo8

798qvoo81#

您需要在计时器完成侦听器的回调上启动下一个计时器( onFinish ). 我建议您一次创建列表中的所有计时器,然后调用 start() 相应的索引。
请注意,我没有测试这段代码,它只是一个示例来说明我的意思

  1. public class CountDownTimerGroup {
  2. private final List<CountDownTimer> timers;
  3. private int currentIndex = 0;
  4. public CountDownTimerGroup(final List<Integer> times) {
  5. timers = times
  6. .stream()
  7. .map(time -> new CountDownTimer(time * 1000, 1000) {
  8. @Override
  9. public void onTick(long l) {
  10. // TODO Do whatever
  11. }
  12. @Override
  13. public void onFinish() {
  14. // TODO Check bounds
  15. timers.get(++currentIndex).start();
  16. }
  17. })
  18. .collect(Collectors.toList());
  19. }
  20. public void start() {
  21. timers.get(0).start();
  22. }
  23. }
展开查看全部

相关问题