Android X分钟后自动注销

时间:2011-04-18 15:27:42

标签: java android timeout

我正在寻找一种在X分钟不活动后注销用户的功能。在对SO进行类似的回答之后,建议的方法似乎是 -

  • 让计时器在后台运行。安排在x分钟后超时。
  • 在用户与应用程序交互的每个函数中(基本上都是所有事件处理程序),调用一个重置计时器的方法。

我自己想不出比这更好的东西,但即使对于具有6-7个不同屏幕和一大堆UI组件的中型应用程序来说,它似乎也是一个巨大的痛苦。有没有更好的方法来解决这个问题?

谢谢,
的Teja。

4 个答案:

答案 0 :(得分:5)

您可以使用CountDownTimer并在每个Activity()

中从onUserInteraction()重新启动{{3}}

答案 1 :(得分:2)

我会这样做:

1)创建一个全局变量来表示时间日志

2)在每个活动的onStop调用期间,使用当前时间更新全局变量。

3)在onResume调用每个活动期间,将当前时间与全局变量时间进行比较,以查看已经过了多长时间

答案 2 :(得分:2)

  

让计时器在后台运行。安排在x分钟后超时。

不,是的。如果您在ServiceIntentService中实施计时器,请使用计时器。否则,不要。

  

在用户与应用程序交互的每个函数中(基本上都是所有事件处理程序),调用一个重置计时器的方法。

这个解决方案难以维持。

您应该在后台运行IntentService(演示文章here),可以轻松实现TimerTaskHandler并使其中的可运行代码生效广播到您的活动。在您的活动中,您可以轻松添加BroadcastReciever,在这种情况下,如果时间已经结束,您可以注销用户。当您的应用程序对用户不可见时,您可以启动服务。

答案 3 :(得分:1)

这是我想为自己实现的。 这是我制作的“图书馆”:https://github.com/zoltanersek/android-timeout-activity

用法:

public class TestActivity extends TimeoutActivity {

@Override protected void onTimeout() {
 // logout
}

@Override protected long getTimeoutInSeconds() {
  return 15 * 60; // 15 minutes
}

}