Android检测和处理用户不活动的最佳方式

时间:2011-04-16 21:03:18

标签: android

不活动是一个非常重要的事件。对于许多应用程序,如果用户在一定时间内没有与其进行交互,则需要重置应用程序并返回主要活动注销,或节省电量。所以我真的希望得到一些关于检测这种情况的最佳方法的反馈。事实上,我认为每个人都可以从中获益。

所以我的问题有两个:

1)有没有比使用组合更好的方法来检测用户不活动    activity.onUserInteraction()重置CountDownTimer?

注意:据报道,这种方法的一个缺点是软键盘交互可能不是          被这种方法所吸引。

注意:另一个报告的缺点是CountDownTimer是关闭主线程的,可能不会更新          正确。我不确定这是一个多大的问题?

注意:CountDownTimer似乎也有取消问题:           how to stop/cancel android CountDownTimer

2)让我们说onUserInteraction()/ CountDownTimer是这个问题的最佳/唯一解决方案    还有一些问题:

a)每个活动应该启动自己的倒数计时器吗?

b)是否应在每项活动的onCreate方法中重新启动一个倒数计时器?

c)假设我想在倒计时到期时调暗屏幕或转到主要活动       应该找到超时处理程序吗?在每项活动中?在服务中?

由于

1 个答案:

答案 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
   }
}
  

据推测,您的应用程序中已经有了一些代码   负责注销,例如当用户点击“注销”时,你   应该只能在上面的示例中调用它。