在活动不可见时计算时间

时间:2012-08-08 15:04:44

标签: android android-activity android-asynctask

我的应用需要计算从用户点击按钮到再次点击按钮的时间。用户应该能够“走动”其他应用和活动,当他再次打开我的应用时 - 计数器将保持稳定计数。

现在我让计数器在后台运行AsyncTask,但是当用户“逛逛”并摆弄其他应用程序和活动然后回来时 - 我的应用程序不计算在内。这就像你第一次启动应用程序一样。

我需要做些什么才能让它在后台和活动生命周期中继续工作和计数?

感谢

3 个答案:

答案 0 :(得分:3)

为什么不记录计数开始的时间并从应用重新出现的时间中减去它,然后使用该值恢复显示器必须完成的任何动态计数任务?

例如: 1.用户在000秒开始应用程序。以毫秒为单位的sys时间戳是11100000(或其他) 2. app运行5秒钟。 3.用户打开他们的电子邮件应用等。 4. 20秒后,用户恢复计时器应用程序。 5. app计算偏移量; 11100025 -11100000 = 25。 6. app在25点恢复“打勾”。

答案 1 :(得分:1)

如果您真的想这样做,请使用Service

您的使用应该是这样的,当您想要开始计算您创建活动的意图以启动您的服务时,您开始每隔一秒左右发送一个广播,您将在活动中收到广播。

您必须在您的活动上实施广播接收器,并在onResume和onPause方法上注册和取消注册。

用户再次点击按钮后,将活动中的广播/意图发送给您的服务,告知其停止计数。

该服务不受您活动生命周期的约束,只要它没有收到广播/意图告诉它停止,它就会运行。

答案 2 :(得分:0)

答案很简单,您需要一项可以计算您需要计算的任何内容的服务。