关闭并重新打开应用程序后,CountDownTimer重新启动

时间:2016-11-13 15:07:40

标签: java android countdowntimer activity-lifecycle android-savedstate

我正在尝试向用户显示CountDownTimer,该用户会立即开始减少用户按下“开始”按钮,但如果我关闭活动并重新打开,则CountDownTimer将重置并重新开始

我使用此link来了解如何设置CountDownTimer

以下是我编码的方式:

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();

请告诉我即使用户关闭应用程序,如何让计时器继续运行。

3 个答案:

答案 0 :(得分:1)

据我所知,你在onClick方法中创建了这个计时器。 尝试创建一些全局变量

CountDownTimer timer

然后在onclick上创建它,就像你一样。

并且暂停:

if (timer != null) {
timer.cancel

}

答案 1 :(得分:0)

您必须使用服务类here 是可以帮助你的链接。

答案 2 :(得分:-1)

您需要将计时器数据存储在某个全局范围内,这样一旦设置的计时器不会随着活动生命周期而改变。

最佳做法建议,使用@ shahid17june回答的服务

如果你不想使用它,或者设置变量来将counttimerdata存储在应用程序类(全局数据)中,并进行适当的更新。