0

Ich versuche dem Benutzer einen CountDownTimer anzuzeigen, der sofort abnimmt, wenn ein Benutzer die 'START'-Taste drückt, aber wenn ich die Aktivität schließe und sie wieder öffne, erhält der CountDownTimer zurücksetzen und erneut starten.CountDownTimer wird nach dem Schließen und erneutem Öffnen der App neu gestartet

Ich habe diese link verwendet, um zu lernen, wie man eine CountDownTimer setzt.

Hier ist, wie ich es codiert:

new CountDownTimer(ms, 1000) { 

      public void onTick(long millisUntilFinished) { 
       String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millisUntilFinished), 
         TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % TimeUnit.HOURS.toMinutes(1), 
         TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % TimeUnit.MINUTES.toSeconds(1)); 
       holder.availableFor.setText(hms); 
      } 

      public void onFinish() { 
       holder.linearLayout.setVisibility(View.GONE); 
       holder.firebaseDatabase.child(itemID).setValue(null); 
       holder.geoFireReference.child(itemID).setValue(null); 
      } 
     }.start(); 

Bitte lassen Sie mich wissen, wie Sie den Timer in Gang zu halten, selbst wenn der Benutzer die App geschlossen wird.

Antwort

1

Wie ich verstehe, erstellen Sie diesen Timer in OnClick-Methode. versuchen, einige globale Variable

CountDownTimer timer 

erstellen Danach wird es in Onclick erstellen, wie Sie tun.

und in OnPause:

if (timer != null) { 
timer.cancel 

}

0

Sie haben Serviceklasse here verwenden, ist die Verbindung, die Ihnen helfen können.

-1

Sie müssen die Timerdaten in einem globalen Bereich speichern, damit der einmal eingestellte Timer nicht mit dem Aktivitätslebenszyklus geändert wird.

best practice vorschlagen, den Einsatz von Service @ shahid17june

auch beantwortet, wie wenn Sie das nicht verwenden möchten, oder Setup-Variable counttimerdata in Anwendungsklasse (globale Daten) zu speichern und sie entsprechend aktualisieren.

Verwandte Themen