Android - 电池对周期性唤醒的简单后台线程的影响

时间:2015-03-09 05:03:13

标签: android multithreading android-activity background

我试图在我的应用中为用户的登录会话实施超时机制 即。如果用户没有与我的应用程序交互过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

任何人都可以批评这种做法/建议更好吗?

0 个答案:

没有答案