2016-07-05 7 views
1

Ich entwickle eine Android-App, in der ich die verbleibende Zeit zeigen muss, in der ein Benutzer eine bestimmte Aufgabe, die ein Countdown-Timer ist, abschließen kann. Wenn der Benutzer die festgelegte Zeit überschreitet, sollte der Timer beginnen, hochzuzählen oder ein Chronometer zu werden. Also, ich muss beide in der gleichen Komponente verwenden. Eine setCountdown-Methode wurde in API 24 auf Chronometer hinzugefügt, kann aber nicht verwendet werden. Kann jemand bitte eine Bibliotheksreferenz oder irgendeinen Code zur Verfügung stellen, in dem ich einen Weg finden kann, meinen Anwendungsfall zu implementieren.Mit Timer und Countdown-Timer in Android-App

Antwort

1

Sie können AsyncTask für diesen Zweck und Feuer Sendung verwenden, wenn die Zeit decreases..i Beispiel bin Entsendung hier:

/******************* 
* asyncTask for timer 
********************/ 
public class MyTimer extends AsyncTask<String, String, String> { 
private AsyncTimer asyncTimer; 
private Context context; 

public MyTimer(Context context) { 
    asyncTimer = (AsyncTimer) context; 
    this.context = context; 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    asyncTimer.updateUi(false); //updates UI 
} 

@Override 
protected void onPostExecute(String s) { 
    asyncTimer.updateUi(true); 
} 

@Override 
protected void onProgressUpdate(String... values) { 
    super.onProgressUpdate(values); 
    int time = Integer.parseInt(values[0]); 
    Intent i = new Intent(Constants.BROADCAST_TIMER_KEY); 
    i.putExtra(Constants.INTENT_BROADCAST_TIME, time); 
    context.sendBroadcast(i); 
} 

@Override 
protected String doInBackground(String... params) { 
    long i = Integer.parseInt(params[0]); 
    while (i >= 0) { 
     publishProgress(String.valueOf(i)); 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     i = i - 1; 
    } 
    return null; 
} 
} 

Sendezeit zu ändern, wo TimeSet ist meine Schnittstelle den Wert auf UI zu ändern

public class BroadcastTimer extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    TimeSet timeSet = (TimeSet) context; 
    int time = intent.getExtras().getInt(Constants.INTENT_BROADCAST_TIME); 
    int min = (time)/60; 
    int sec = time % 60; 
    timeSet.FinalResult(min + context.getString(R.string.str_mins) + sec + context.getString(R.string.str_secs)); 
} 
} 
Verwandte Themen