2015-08-23 3 views
0

У меня есть большая проблема с изменением значения от конструктораПеременная CountDownTimer

Это приложение для фонарей. Он подключится к сайту, чтобы проверить значение интервала (например, 500 мс), и он будет хранить его в переменной с именем frum_timer каждые 2 секунды.

Для этого есть объект. (также обновит логическое значение, если есть новое значение)

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 секунд, чтобы убедиться, frum_timer от FlashActivity объекта будет принимать изменения.

и используя этот

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

в FlashActivity для отображения переменной.

Однако, после того, как переменная frum_timer изменяется, FlashLight продолжать идти снова и снова в той же самой старой скорости, даже если сделана FlashActivity.cancel() с последующим FlashActivity.start()

Может кто-нибудь дать мне некоторую помощь?

Полная связь кода: https://mycodestock.com/public/snippet/14395

Резюме: 1.You запустить приложение. 2. Refresh обратный отсчет начинается через 2 секунды 3. Когда появится frum_timer начнется FlashActivity. Через 2 секунды, если есть другое значение, сохраненное на frum_timer, фактическая FlashActivity будет отменена и запустит новую. 4.The проблема является новым стартом FlashActivity но с старого frum_timer

ответ

0

Я использовал:

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