SystemClock.uptimeMillis() not working



当我按下设备上的睡眠按钮然后将其转回并"更新"时,正常运行时间显示的时间就像设备没有进入睡眠状态一样。

来自 Android 参考: SystemClock:

uptimeMillis() 以系统启动以来的毫秒为单位。当系统进入深度睡眠(CPU 关闭、显示变暗、设备等待外部输入)时,此时钟停止,但不受时钟缩放、空闲或其他节能机制的影响。这是大多数间隔计时的基础,例如 Thread.sleep(millls)、Object.wait(millis) 和 System.nanoTime()。

此时钟保证是单调的,并且适用于间隔不跨越设备睡眠状态时的间隔计时。大多数接受时间戳值的方法当前都需要 uptimeMillis() 时钟。

Thread.sleep(millis) 和 Object.wait(millis) 等标准函数始终可用。这些函数使用正常运行时间毫秒()时钟;如果设备进入睡眠状态,则剩余时间将推迟到设备唤醒。这些同步函数可能会被 Thread.interrupt() 中断,您必须处理 InterruptedException。

--

似乎您的手机处于空闲状态或省电状态,并且在技术上没有进入睡眠状态......

假设您正在谈论的按钮是"电源"或"锁定"按钮,这不一定会使设备进入深度睡眠状态。事实上,看看深度睡眠的定义(正常运行时间计数器何时停止),我认为这将是非常罕见的。手机几乎肯定会保持CPU在低水平运行,以监控警报计时器和其他系统计划事件。如果您想监控手机处于"睡眠"状态的时间(屏幕关闭、手机锁定等),我怀疑您需要注册一个广播接收器并监控这些特定事件。

看看这个线程 Android - 如何接收广播意图ACTION_SCREEN_ON/关闭?另请查看电源管理器

相关内容

  • 没有找到相关文章

最新更新