Я проектирую таймер обратного отсчета, который отлично работает, но только если я останусь в этом Activity
. Потому что, если начинается обратный отсчет, а я, например, возвращаюсь и запускаю другие Activity
, отсчет идет после обратного отсчета. И по логике вещей, если я снова запускаю активную программу, где находится таймер обратного отсчета, кажется, что ничто не ведет обратный отсчет, но в заднем плане идет обратный отсчет, я знаю, потому что на значке таймера я выбрасываю уведомление о продолжении, чтобы показать его в вкладка уведомления.
Код ниже, метод sendnotification - это метод, который выдает предупреждение, когда время заканчивается, и sendnotificationTiempo
для отправки уведомления на вкладку каждую секунду, чтобы показать вверху.
public static final int NOTIFICATION_ID = 33;
public static final int NOTIFICATION_ID_Tiempo = 34;
private int minCrono;
TextView text;
MyCounter timer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StartCrono = (Button) findViewById(R.id.butt_start);
CancelCrono = (Button) findViewById(R.id.butt_cancel);
text=(TextView)findViewById(R.id.text_countTime1);
CancelCrono.setEnabled(false);
minCrono = mins.getCurrentItem();
StartCrono.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
minCrono=(60000*minCrono);
timer = new MyCounter(minCrono,1000);
timer.start();
}
});
CancelCrono.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
timer.cancel();
text.setText("El tiempo se ha cancelado");
minutosCrono = mins.getCurrentItem();
if (mNotificationManager != null)
mNotificationManager.cancel(NOTIFICATION_ID_Tiempo);
}
});
}
Класс обратного отсчета:
public class MyCounter extends CountDownTimer{
public MyCounter(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
StartCrono.setEnabled(true);
CancelCrono.setEnabled(false);
mins.setEnabled(true);
minCrono = mins.getCurrentItem();
//
text.setText("Time Complete!");
sendnotification("Guau", "Time finished.");
}
@Override
public void onTick(long millisUntilFinished) {
long segRestantesTotal=(millisUntilFinished/1000);
long minRestantes= (segRestantesTotal/60);
long segRestantes= (segRestantesTotal%60);
if(segRestantes>=10){
text.setText(minRestantes+":"+segRestantes);
sendnotificationTiempo("Guau", minRestantes+":"+segRestantes);
}
else{
text.setText(minRestantes+":0"+segRestantes);
sendnotificationTiempo("Guau", minRestantes+":0"+segRestantes);
}
}
}
}
Итак, что я хотел бы сделать, это знать, когда я возвращаюсь Activity
и запускаю другой, чтобы показать время, которое отсчитывает в фоновом режиме, чтобы показать его, например, в текстовом представлении.
Или, может быть, я смогу получить идеальное время, которое отсчитывается от вкладки уведомлений.
Спасибо!