不活动是一个非常重要的事件。对于许多应用程序,如果用户在一定时间内没有与其进行交互,则需要重置应用程序并返回主要活动注销,或节省电量。所以我真的希望得到一些关于检测这种情况的最佳方法的反馈。事实上,我认为每个人都可以从中获益。
所以我的问题有两个:
1)有没有比使用组合更好的方法来检测用户不活动 activity.onUserInteraction()重置CountDownTimer?
注意:据报道,这种方法的一个缺点是软键盘交互可能不是 被这种方法所吸引。
注意:另一个报告的缺点是CountDownTimer是关闭主线程的,可能不会更新 正确。我不确定这是一个多大的问题?
注意:CountDownTimer似乎也有取消问题: how to stop/cancel android CountDownTimer
2)让我们说onUserInteraction()/ CountDownTimer是这个问题的最佳/唯一解决方案 还有一些问题:
a)每个活动应该启动自己的倒数计时器吗?
b)是否应在每项活动的onCreate方法中重新启动一个倒数计时器?
c)假设我想在倒计时到期时调暗屏幕或转到主要活动 应该找到超时处理程序吗?在每项活动中?在服务中?
由于
答案 0 :(得分:3)
刚才偶然发现这个问题为I've answered something similar。
就个人而言,我会选择你建议的选项2,并将计时器放入单身,以便在所有活动中使用它。除非您有特定要求在您的应用程序的不同功能下做出不同反应,否则不需要单独的倒数计时器。
为什么要在onCreate中重置计时器?每次用户与应用程序交互时都应该这样做,例如在activity.onUserInteraction()方法中。
引用我的previous answer:
你需要对你的确切投入进行一些思考 要求在这里,但从我所知,你想保持 跟踪用户交互以及时间限制是否已过期 最后一次交互,执行一些操作,在您的情况下将其记录下来 你的申请。
首先,您需要一些可以在最后一个时间跟踪的地方 发生了交互,因为你希望它能够适用于你 可以使用单例来保存它,或覆盖Application类, 无论哪种方式都应该这样做。
接下来,您需要开始跟踪用户互动。从你的 活动,你可以覆盖onUserInteraction方法,这个得到 在用户与应用程序(如密钥)交互时随时调用 事件。每次你点击这个方法,更新你的单身人士并让它 知道发生了什么事,带有时间戳。
最后,您需要进行某种循环检查以不断检查是否 最近发生了什么。各种各样的人都是这样做的,你 可以有一个连续循环,将当前时间戳与 最后记录的事件,一些草案代码:
while(true)
{
if (timeLastEventRecorded < (now - 15))
{
//nothing has happened in 15 minutes, so take corrective action
}
}
据推测,您的应用程序中已经有了一些代码 负责注销,例如当用户点击“注销”时,你 应该只能在上面的示例中调用它。