我正在寻找一种在X分钟不活动后注销用户的功能。在对SO进行类似的回答之后,建议的方法似乎是 -
我自己想不出比这更好的东西,但即使对于具有6-7个不同屏幕和一大堆UI组件的中型应用程序来说,它似乎也是一个巨大的痛苦。有没有更好的方法来解决这个问题?
谢谢,
的Teja。
答案 0 :(得分:5)
您可以使用CountDownTimer
并在每个Activity()
onUserInteraction()
重新启动{{3}}
答案 1 :(得分:2)
我会这样做:
1)创建一个全局变量来表示时间日志
2)在每个活动的onStop调用期间,使用当前时间更新全局变量。
3)在onResume调用每个活动期间,将当前时间与全局变量时间进行比较,以查看已经过了多长时间
答案 2 :(得分:2)
让计时器在后台运行。安排在x分钟后超时。
不,是的。如果您在Service
或IntentService
中实施计时器,请使用计时器。否则,不要。
在用户与应用程序交互的每个函数中(基本上都是所有事件处理程序),调用一个重置计时器的方法。
这个解决方案难以维持。
您应该在后台运行IntentService
(演示文章here),可以轻松实现TimerTask
或Handler
并使其中的可运行代码生效广播到您的活动。在您的活动中,您可以轻松添加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
}
}