我希望实现一个功能,在X分钟不活动后注销用户。经过对SO的类似回答后,建议的方法似乎是-
- 有一个定时器在后台运行。设置x分钟后超时
- 在用户与应用交互的每个函数中(基本上是所有事件处理程序),调用一个方法来重置计时器。
我自己想不出比这更好的了,但这似乎是一个巨大的痛苦,即使是一个中等大小的应用程序,有6-7个不同的屏幕和一大堆UI组件。有更好的处理方法吗?
谢谢,
Teja .
您可以使用CountDownTimer
并在每个Activity()
中从onUserInteraction()
重新启动它
在后台设置一个计时器。设置为x分钟后超时
No and yes。如果要在Service
或IntentService
中实现计时器,请使用计时器。否则,不。
在用户与应用交互的每个函数中(基本上是所有的事件处理程序),调用一个重置计时器的方法。
这个解决方案很难维护。
您应该在后台运行一个IntentService
(这里是演示文章),它可以很容易地实现TimerTask
或Handler
,并使其内部的可运行代码向您的活动发出广播。在你的活动中,你可以很容易地添加一个BroadcastReciever
,在这种情况下,你可以在超时时注销用户。你可以在应用程序对用户不可见时启动服务。
我是这样做的:
1)创建一个全局变量来表示时间日志
2)在每个活动的onStop调用期间,用当前时间更新全局变量。
这是我想为自己实现的东西。这是我做的一个"库":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
}
}