【发布时间】:2015-06-05 10:26:26
【问题描述】:
我正在为某公司内部开发一个Android应用程序,它需要记录员工的工作时间。因此,系统时间的工作至关重要。我的应用程序非常需要知道用户何时更改系统时间。大不了,你说,看看这个:Is there a way to detect when the user has changed the clock time on their device?
问题是用户可能会通过在更改时间之前强制停止应用程序来绕过该解决方案。然后应用程序将不会收到系统通知,这在此处进行了精彩描述:https://stackoverflow.com/a/19856367/1309803
我不介意在下次启动应用程序时检查它,但我怎么可能知道用户是否更改了时间?我知道 SystemClock.elapsedRealtime()。如果用户没有重新启动设备,我可以根据这些值的增量来计算时间偏移,但这是我不确定的。我的应用程序订阅了 BOOT_COMPLETED 事件,但在应用程序处于停止状态时也不会收到该事件。
而且,总而言之,那家公司的员工应该在没有网络访问权限的情况下工作,所以我不能依赖 Web 服务器。那么还有其他可能的方法吗?
【问题讨论】:
-
您是否尝试过将服务与 onStartCommand() 中的 START_STICKY 结合使用来实现时间变化观察的“无法杀死”环境?
-
@Videdenta 您能否稍微扩展您的建议?我无法想象该服务如何帮助应对强制停止场景。
-
即使在应用程序关闭后,服务也会运行。当然你也可以通过TaskManager强制关闭Service,但是使用START_STICKY属性会重新创建Service。
-
@Videdenta 我的问题与通过任务管理器强制关闭完全有关,否则广播接收器将仍然能够接收意图。在这种(强制关闭)情况下,START_STICKY 似乎不相关(stackoverflow.com/a/9441795/1309803)。但是,即使它确实重新创建了服务,我怎么知道系统时间在它结束时是否发生了变化?
标签: android time notifications