[英]Resume countdown timer android
I am new to android programming and am trying resume countdown timer in my android app after the app regains focus. 我是android编程的新手,正在重新获得焦点后尝试在我的android应用中恢复倒数计时器。 How do i get a saved instance of the current state of the timer which should be resumed when the user comes back into the application?
我如何获取计时器的当前状态的已保存实例,当用户重新进入应用程序时应恢复该实例?
Here is my code: 这是我的代码:
private long resume_timer;
MainActivity.CounterClass count_timer;
TextView timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_advanced);
count_timer = new MainActivity.CounterClass(180000, 1000);
count_timer.start();
public class CounterClass extends CountDownTimer {
public CounterClass(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
// TODO Auto-generated constructor stub
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
resume_timer = millisUntilFinished;
long millis = millisUntilFinished;
String hms = String.format(Locale.getDefault(),
"%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis)
- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS
.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis)
- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS
.toMinutes(millis)));
timer.setText(hms);
}
@Override
public void onFinish() {
timer.setText("time's up!!");
}
@Override
protected void onPause() {
count_timer.cancel();
super.onPause();
}
@Override
protected void onResume() {
// how do i resume timer here? this logic dot work.
count_timer = new MainActivity.CounterClass(resume_timer, 1000);
count_timer.start();
super.onResume();
}
I resolved this by taking advantage of the activity life cycle as shown below: 我通过利用活动生命周期来解决此问题,如下所示:
private long resume_timer;
MainActivity.CounterClass count_timer;
TextView timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_advanced);
count_timer = new MainActivity.CounterClass(180000, 1000);
count_timer.start();
public class CounterClass extends CountDownTimer {
public CounterClass(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
// TODO Auto-generated constructor stub
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
resume_timer = millisUntilFinished;
long millis = millisUntilFinished;
String hms = String.format(Locale.getDefault(),
"%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis)
- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS
.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis)
- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS
.toMinutes(millis)));
timer.setText(hms);
}
@Override
public void onFinish() {
timer.setText("time's up!!");
}
@Override
protected void onPause() {
count_timer.cancel();
super.onPause();
}
@Override
protected void onRestart() {
//resume timer when user comes back to the app
count_timer = new MainActivity.CounterClass(resume_timer, 1000);
count_timer.start();
super.onRestart();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.