我正在尝试制作一个从日期开始计数的计时器, 因此,每次我启动应用程序时,计时器都会一直更新 例如,如果我在20:00 22/11/18启动计时器,明天在21:00它将显示25:00:00。
我只发现了如何执行CountdownTimer或只是一个简单的计时器。
答案 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”的文件,以便每次启动时,该文件都会从该值更新。