C++;11 std::chrono::Android上的稳定时钟问题

C++;11 std::chrono::Android上的稳定时钟问题,android,c++,c++11,Android,C++,C++11,在我为Android平台制作的应用程序中,我一直在使用std::chrono::staid_clock进行间隔计算。 代码: 现在我关闭手机并重新启动手机。我运行我的应用程序,这次的输出是: On Enter Start Time Point - 114 根据cppreference.com上的定义 “Class std::chrono::Stadium_clock表示一个单调的时钟。此时钟的时间点不能随着物理时间向前移动而减少。” 当我重新启动手机时,输出值如何降低? 如果有人遇到过这个问题

在我为Android平台制作的应用程序中,我一直在使用std::chrono::staid_clock进行间隔计算。

代码:

现在我关闭手机并重新启动手机。我运行我的应用程序,这次的输出是:

On Enter Start Time Point - 114
根据cppreference.com上的定义

“Class std::chrono::Stadium_clock表示一个单调的时钟。此时钟的时间点不能随着物理时间向前移动而减少。

当我重新启动手机时,输出值如何降低?


如果有人遇到过这个问题,请在这里帮助我。谢谢

对稳定时钟的正式要求是,在另一次调用
now()
之前调用
now()
的结果总是小于或等于第二次调用的结果。发生在之前的关系仅适用于程序运行中的操作。稳定的时钟不需要在程序的不同调用之间保持稳定。

在Android上,AFAICT稳定的时钟与(来自Java)System.clock.elapsedRealtime相同,后者在启动时重置为零--


不过,我完全没有找到clock_gettime的源代码。显示它调用clock_gettime(clock_单调),但我不确定如何从那里穿透面纱。

保证是针对类型为
稳定的\u clock
的特定对象-它永远不会降低其值。您正在比较该类型的两个不同实例。感谢您的回复。因此,基本上,稳定时钟的时代是系统启动对吗?感谢您的快速响应。当我关闭应用程序并在1小时后再次启动时,稳定性仍然成立。但只有在我重新启动手机后,稳定性才会消失。对此有何解释?@mechX--“不需要”与“不需要”不同。最有可能的是,
now()
调用操作系统中的某个东西来获取当前时间,操作系统时钟会稳步增加。重新启动时,操作系统时钟也会重新启动。嘿,再次感谢您的解释。这使得我的工作有点棘手,因为我需要稳定,即使在重启后,我“不能使用系统时钟,因为它依赖于挂钟”。对可能的解决方案或解决方法有什么建议吗?@mechX--我倾向于在应用程序退出时保存当前时间,然后在应用程序重新启动时加载它,并使用以前保存的时间和当前指示的时间之间的差来调整后续时间。嘿,Pete,使用system_clock的问题是,它可以通过更改手机设置的时间进行攻击。如果时钟不是单调的,我的解决方案就失败了。
On Enter Start Time Point - 521
On Enter Start Time Point - 114