CountDownTimer 变量

CountDownTimer variable

我有一个关于从构造函数更改值的主要问题

这是一款手电筒应用。它将连接到站点以检查间隔值(例如 500 毫秒),并将每 2 秒将其存储到名为 frum_timer 的变量中。

这是一个对象。 (如果有新值,它也会更新一个布尔值)

FlashActivity = new CountDownTimer(40000, frum_timer) {

    @Override
    public void onTick(long millisUntilFinished) {
        stats_of_run = true;
        if (bool) {
            final_form.setText("\Flash ON//");
            // CAMERA INSTRUCTIONS FOR OPENING FLASH
            bool = false;
            frumtimer_stats.setText("Speed:" + frum_timer);
        } else {
            stats_of_run = true;
            final_form.setText("->Flash OFF-<");
            // CAMERA INSTRUCTIONS FOR CLOSING FLASH
            bool = true;
        }
    }

    @Override
    public void onFinish() {
    }

}.start();  

我制作了另一个刷新率为 200 秒的 CountDownTimer 对象,以确保 FlashActivity 对象中的 frum_timer 会发生变化。

并使用这个

frumtimer_stats.setText("Speed:" + frum_timer);

FlashActivity 中用于显示变量。

然而,在变量 frum_timer 更改后,FlashLight 会以相同的旧速度一次又一次地继续前进,即使在 FlashActivity.cancel() 后跟 FlashActivity.start()

有人可以帮我吗?

完整 link 代码: https://mycodestock.com/public/snippet/14395

总结: 1.You 启动应用程序。 2.刷新倒计时2秒后开始 3. 当出现frum_timer时,FlashActivity就会启动。 2 秒后,如果 frum_timer 上存储了另一个值,实际的 FlashActivity 将被取消并启动一个新的。 4.The 问题是新的 FlashActivity 开始了,但是 old frum_timer

我用过:

 public void startProgress(View view) {
        // do something long
        Runnable runnable = new Runnable() {
          @Override
          public void run() {
            for (int i = 0; i <= 20; i++) {
              final int value = i;
               doFakeWork();


              progress.post(new Runnable() {
                @Override
                public void run() {
                 // text.setText("Updating");
                    progress.setMax(20);
                  progress.setProgress(value);
                }
              });
            }
          }
        };
        new Thread(runnable).start();
      }


  private void doFakeWork() {
        try {
          Thread.sleep(800);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }