2014-01-30 6 views
8

Ive suchen eine Methode, um zu sehen, ob ein CountDownTimer läuft oder nicht, aber ich kann nicht einen Weg, jede Hilfe sehr Dafürprüft CountDownTimer läuft

if (position == 0) { 

    mCountDown = new CountDownTimer((300 * 1000), 1000) { 

     public void onTick(long millisUntilFinished) { 
      mTextField.setText("seconds remaining: " 
        + millisUntilFinished/1000); 
     } 

     public void onFinish() { 
      mTextField.setText("0:00"); 
      String path = "/sdcard/Music/ZenPing.mp3"; 
      try { 

       mp.reset(); 
       mp.setDataSource(path); 
       mp.prepare(); 
       mp.start(); 

      } catch (IOException e) { 
       Log.v(getString(R.string.app_name), 
         e.getMessage()); 
      } 
     } 
    }.start(); 

} 

geschätzt werden, wie kann finden würde Ich überprüfe, ob mCountDown gerade läuft?

+0

Können Sie nicht einen globalen boolean verwenden? Setzen Sie auf TRUE, wenn Sie CountDownTimer aufrufen und auf FALSE un onFinish()? –

+0

kannst du ausarbeiten, was du erreichen willst ???? – MGDroid

+1

Beachten Sie, dass die Verwendung der booleschen Variablen in den Methoden onTick() und onFinish() zur Angabe des Status des Timers nicht klar ist. Da Sie den Timer mit der Methode cancel() stoppen können. Und in diesem Fall ist Ihre Variable immer noch wahr und zeigt einen falschen Status an. –

Antwort

29

Einfach ein boolean Flagge, die zeigen, dass durch den Code folgenden

boolean isRunning = false; 

mCountDown = new CountDownTimer((300 * 1000), 1000) { 

    public void onTick(long millisUntilFinished) { 
     isRunning = true; 
     //rest of code 
    } 

    public void onFinish() { 
     isRunning= false; 
     //rest of code 
    } 
}.start(); 
1

onTick ist Ihr Rückruf für einen laufenden Prozess, Sie können entweder eine Eigenschaft zum Verfolgen des Status festlegen.

isTimerRunning =false; 

Nach start -> make it true; Innen OnTick -> make it true (eigentlich nicht erforderlich, aber einer doppelten Kontrolle) Innen OnFinish -> make it false;

die isTimerRunning Eigenschaft verwenden, um den Status zu verfolgen.

0

Überprüfen Sie, ob die CountDownTimer läuft, und auch wenn die App im Hintergrund läuft.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ... 
    myButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      myButton.setText("Button clicked"); 
      countDownTimer = new CountDownTimer(3000, 1000) { 
       @Override 
       public void onTick(long millisUntilFinished) { 
        //After turning the Smartphone the follow both methods do not work anymore 
        if (!runningBackground) { 
         myButton.setText("Calc: " + millisUntilFinished/1000); 
         myTextView.setText("Calc: " + millisUntilFinished/1000); 
        } 
       } 
       @Override 
       public void onFinish() { 
        if (!runningBackground) { 
         //Do something 
        } 
        mTextMessage.setText("DONE"); 
        runningBackground = false; 
        running = false; 
       } 
      }; 
      //timer started 
      countDownTimer.start(); 
      running = true; 
     } 
    }); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    runningBackground = false; 
} 

@Override 
protected void onPause() { 
    runningBackground = true; 
    super.onPause(); 
}