【问题标题】:CountDownTimer variableCountDownTimer 变量
【发布时间】:2015-08-23 14:48:15
【问题描述】:

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

这是一个手电筒应用。它将连接到站点以检查间隔值(例如 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();  

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

并使用它

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

FlashActivity 中用于显示变量。

但是,在变量 frum_timer 更改后,FlashLight 会以同样的速度一次又一次地运行,即使 a 做了一个 FlashActivity.cancel() 后跟 FlashActivity.start()

谁能帮帮我?

完整的代码链接: https://mycodestock.com/public/snippet/14395

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

【问题讨论】:

    标签: java android timer countdown flashlight


    【解决方案1】:

    我用过:

     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();
            }
          }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 1970-01-01
      • 2012-11-08
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多