1

我试图向用户展示一个CountDownTimer用户按下“开始”按钮后立即开始减少,但如果我关闭活动并重新打开它,CountDownTimer 将被重置并重新开始。

我使用这个链接来学习如何设置一个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();

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

4

3 回答 3

1

据我了解,您正在 onClick 方法中创建此计时器。尝试创建一些全局变量

CountDownTimer timer

之后在 onclick 中创建它,就像你做的那样。

并处于暂停状态:

if (timer != null) {
timer.cancel

}

于 2016-11-13T15:58:07.557 回答
1

您必须在这里使用服务类 是可能对您有所帮助的链接。

于 2016-11-13T18:39:13.907 回答
0

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

最佳实践建议,使用@shahid17june 回答的服务

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

于 2016-11-14T08:43:00.663 回答