Android如何创建一个可以运行8小时以上的计数计时器应用程序
我想创建一个应用程序来计算用户启动计数计时器的时间。 我创建了一个样本。 -我的应用程序有一个按钮,当用户单击它时,服务启动 -当服务启动时,它会将变量noOfSeconds=0设置为SharePreference,并启动计时器以每秒钟增加变量noOfSeconds 当我的应用程序挂起时(用户转到其他应用程序或主屏幕),它工作正常。 但是,当长时间(超过2小时)暂停时,noOfSeconds是错误的 我认为Android操作系统会在我的暂停活动和后台服务长时间处于非活动状态时终止它们Android如何创建一个可以运行8小时以上的计数计时器应用程序,android,Android,我想创建一个应用程序来计算用户启动计数计时器的时间。 我创建了一个样本。 -我的应用程序有一个按钮,当用户单击它时,服务启动 -当服务启动时,它会将变量noOfSeconds=0设置为SharePreference,并启动计时器以每秒钟增加变量noOfSeconds 当我的应用程序挂起时(用户转到其他应用程序或主屏幕),它工作正常。 但是,当长时间(超过2小时)暂停时,noOfSeconds是错误的 我认为Android操作系统会在我的暂停活动和后台服务长时间处于非活动状态时终止它们 您是否有任
您是否有任何示例代码可以使计时器在很长时间内运行?要使应用程序在后台运行很长时间,您可以使用前台服务,在状态栏中显示通知并保持唤醒锁定。这样你的应用程序就不太可能被杀死
顺便说一句,如果你的应用程序只是显示用户返回应用程序的时间,为什么不存储开始时间并在下次发布时计算差异?谢谢你的回答@dewey reed考虑你的建议,我不能使用它。因为在用户启动计时器之后,它就不活动了。用户手动更改手机的时间=>它会使我的计时器显示错误的秒数。您可以使用前台服务和计时器与我共享源代码吗?我以前试过,但不起作用。提前谢谢!所说的
System.nanoTime()
不会影响通话时间。至于前台服务,官方文件是有帮助的。我尝试使用System.nanoTime()
。然而,这是不准确的,它返回的是纳秒而不是秒。您是否尝试过像链接中所说的那样SystemClock.elapsedRealtime()
?前台服务、FCM通知或使用Firebase dispatcher