我的应用程序需要计算从用户单击按钮到他再次单击它的时间。用户应该能够“四处走动”其他应用程序和活动,并且当他再次打开我的应用程序时 - 计数器将保持稳定计数。
现在我的计数器在后台运行 AsyncTask 但是当用户“四处走动”并摆弄其他应用程序和活动然后回来时 - 我的应用程序不计数。就像您第一次启动该应用程序一样。
我需要做什么才能使其在后台和整个活动生命周期中继续工作和计数?
谢谢
我的应用程序需要计算从用户单击按钮到他再次单击它的时间。用户应该能够“四处走动”其他应用程序和活动,并且当他再次打开我的应用程序时 - 计数器将保持稳定计数。
现在我的计数器在后台运行 AsyncTask 但是当用户“四处走动”并摆弄其他应用程序和活动然后回来时 - 我的应用程序不计数。就像您第一次启动该应用程序一样。
我需要做什么才能使其在后台和整个活动生命周期中继续工作和计数?
谢谢
为什么不记录您的计数开始时间并从您的应用重新出现的时间中减去它,然后使用该值恢复您的显示器必须完成的任何动态计数任务?
例如:1. 用户在 000 秒时启动应用程序。以毫秒为单位的 sys 时间戳为 11100000(或其他) 2. 应用程序运行 5 秒。3. 用户打开他们的电子邮件应用程序等。 4. 20 秒后,用户恢复计时器应用程序。5.app计算偏移量;11100025 -11100000 = 25。 6. 应用程序在 25 处恢复“滴答”。
如果您真的想这样做,请使用Service。
您的使用应该是这样的,当您想开始计数时,您会在您的活动上创建一个意图以启动您的服务,在您开始每秒发送一次广播的服务上,您将收到您的活动。
您必须在您的活动上实现广播接收器,并在 onResume 和 onPause 方法上注册和取消注册它。
用户再次单击您的按钮后,然后从您的 Activity 向您的服务发送广播/意图,告诉它停止计数。
该服务不受您活动的生命周期的约束,只要它没有收到广播/意图告诉它停止,它就会运行。
答案很简单,您需要一项服务来计算您需要计算的任何内容。