android 系统时钟.uptimeMillis()不工作

vql8enpb  于 2022-12-09  发布在  Android
关注(0)|答案(2)|浏览(135)

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

mklgxw1f

mklgxw1f1#

Android Reference: SystemClock开始:

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

此时钟保证是单调的,并且适合于间隔不跨越设备睡眠时的间隔计时。大多数接受时间戳值的方法当前都需要**uptimeMillis()时钟。
Thread.sleep(米利斯)Object.wait(millis)**这样的标准函数总是可用的。如果设备进入睡眠状态,剩余的时间将被推迟,直到设备被唤醒。这些同步函数可能会被Thread.interrupt()中断,您必须处理InterruptedException。

看起来你的手机是闲置或省电,而不是技术上的睡眠...

xvw2m8pv

xvw2m8pv2#

假设您所讨论的按钮是“电源”或“锁定”按钮,这并不一定会使设备进入深度睡眠状态,事实上,看看深度睡眠的定义(当正常运行时间计数器将停止)我认为这将是 * 非常 * 罕见的。手机几乎肯定会保持CPU在低水平运行,以监测报警计时器和其他系统预定事件。如果你想监控手机处于“睡眠”状态的时间(屏幕关闭,手机锁定等),我怀疑你需要注册一个广播接收器,并监控那些特定的事件。
看看这个线程Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?也看看power manager

相关问题