X 分钟后自动注销,Android

发布于 2024-11-02 06:10:53 字数 264 浏览 2 评论 0 原文

我正在寻求实现一项功能,可以在 X 分钟不活动后注销用户。在经历了类似的答案后,建议的方法似乎是 -

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

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

谢谢,
特贾。

I'm looking to implement a feature that logs out the user after X minutes of inactivity. After going through a similar answer on SO, the suggested method seems to be to -

  • Have a timer running in the background. Schedule it to timeout after x minutes.
  • In every function where the user interacts with the app (basically all event handlers), call a method that resets the timer.

I can't think of anything better than this myself, but it's seems to be a huge pain even for a medium sized application that has 6-7 different screens and a whole bunch of UI components. Is there a better way to handle this?

Thanks,
Teja.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

停滞 2024-11-09 06:10:53

有一个计时器在后台运行。将其安排在 x 分钟后超时。

不,又是。如果您在 Service 中实现计时器,请使用计时器 或在 IntentService 中。否则,不要。

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

该解决方案将很难维持。

您应该有一个 IntentService (演示文章此处) 在后台运行,可以轻松实现 TimerTask Handler 和使其中的可运行代码向您的活动发出广播。在您的 Activity 中,您可以轻松添加 BroadcastReciever 在这种情况下,如果时间到了,您可以注销用户。当您的应用程序对用户不可见时,您可以启动服务。

Have a timer running in the background. Schedule it to timeout after x minutes.

No and yes. Use a timer if you're implementing it in a Service or in an IntentService. Otherwise, don't.

In every function where the user interacts with the app (basically all event handlers), call a method that resets the timer.

That solution would be hard to maintain.

You should have an IntentService (demonstrating article here) running in the background that can easily implement a TimerTask or a Handler and make the runnable code inside it fire a broadcast to your activities. In your activities you can easily add a BroadcastReciever and in that case you can log out the user if time is out. You can start your service when your application isn't visible to the user.

摘星┃星的人 2024-11-09 06:10:53

我将这样做:

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

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

3)在每个activity的onResume调用期间,将当前时间与全局变量time进行比较,看看已经过去了多少时间

This is how I would go about this:

1) Create a global variable to represent a time log

2) During the onStop call for each activity, update the global variable with the current time.

3) During the onResume call for each activity, compare the current time with the global variable time to see how much time has passed

思念绕指尖 2024-11-09 06:10:53

这是我想为自己实现的事情。
这是我制作的一个“库”: https://github.com/zoltanersek/android-timeout-活动

用法:

public class TestActivity extends TimeoutActivity {

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

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

}

This is something that I wanted to implement for myself.
Here is a "library" I made: https://github.com/zoltanersek/android-timeout-activity

Usage:

public class TestActivity extends TimeoutActivity {

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

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

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文