我试图在我的应用中为用户的登录会话实施超时机制 即。如果用户没有与我的应用程序交互过10分钟,那么当他下次使用该应用程序时(无论该应用程序以前是在后台还是当前在前台),他应该被带到登录屏幕。
我目前的实施使用:
- 来自我的' BaseActivity'的Java线程的单例实例(称之为' TimeoutThread') (除了LoginActivity之外,我的所有活动都扩展了BaseActivity)
- 所以单身' TimeoutThread'将在任何登录后活动第一次启动时启动。
- ' TimeoutThread'将简单地跟踪< lastUserInteractionTimeStamp'在一个带有Thread.wait()的while()循环内...
因此它每2秒唤醒一次,检查(currentTime-lastUserInteractionTimeStamp)是否大于10分钟,如果是,那么如果回调对象不为空则它会触发一些回调(每当应用程序进入时回调都为null进入背景等)
此方法现在可以正常工作。
我担心的是,即使应用程序进入后台(例如,用户按下Home按钮),这个线程每隔几秒唤醒一次(真实)循环内的Thread.wait(),它会导致电池耗尽。
我一直无法找到一个很好的链接来解释保持这种线程的效果。
我找到了电源优化的链接,安排重复任务等(粘贴在下面),但无法在那里直接找到我的答案。
https://developer.android.com/training/monitoring-device-state/index.html
Scheduling recurring task in Android
任何人都可以批评这种做法/建议更好吗?