从日期开始计时

时间:2018-11-22 15:36:03

标签: java android

我正在尝试制作一个从日期开始计数的计时器, 因此,每次我启动应用程序时,计时器都会一直更新 例如,如果我在20:00 22/11/18启动计时器,明天在21:00它将显示25:00:00。

我只发现了如何执行CountdownTimer或只是一个简单的计时器。

3 个答案:

答案 0 :(得分:2)

启动计时器时,您可以获得以下时间:

TD.sn

然后,当您想显示计时器在运行时,通过计算

long timerStart = System.currentTimeMillis();

这将提供您自启动计时器以来的毫秒数。并按照您希望的方式对其进行格式化,可以将其传递给此函数:

long timePassed = System.currentTimeMillis() - timerStart;

编辑:如其他答案所述,您将需要在关闭/重新打开应用程序后将timerStart存储在某处以跟踪它。我会推荐类似的共享首选项you can look at this question to figure out how to do that

答案 1 :(得分:0)

除非您愿意创建一个可以在后台连续运行几天的应用程序(对于这种复杂性的应用程序,该应用程序并未进行优化)

我认为最好的解决方案是将开始日期(开始时间戳)存储在某个地方。无论是在Room还是Shared Preferences中进行编程,都不是要对您的APP进行编程以使您的计数器每秒增加或减少1,而不是计算每秒的开始时间戳和当前时间戳之间的差。

关于性能,显然存在很多问题,但是根据您的问题,我想您对此并不担心,因此,将其优化为更快并进一步精确

答案 2 :(得分:0)

但是,在上面需要与Quinn保持一致,您需要在某个地方创建一个存储当前时间的文件。否则,每次应用重新启动时,变量timerStart都会重置。

因此,您需要创建一个存储“ timerStart”的文件,以便每次启动时,该文件都会从该值更新。