当我按下设备上的睡眠按钮然后将其转回并更新"正常运行时间表示设备没有进入睡眠状态的时间。
答案 0 :(得分:2)
uptimeMillis()以毫秒为单位计算。当系统进入深度睡眠状态(CPU关闭,显示较暗,设备等待外部输入)时,此时钟停止,但不受时钟缩放,空闲或其他省电机制的影响。这是大多数间隔时间的基础,例如 Thread.sleep(millls), Object.wait(millis)和System.nanoTime()。
此时钟保证是单调的,适用于间隔时间不跨越设备睡眠的时间间隔。大多数接受时间戳值的方法目前都需要 uptimeMillis()时钟。
Thread.sleep(millis)和 Object.wait(millis)等标准函数始终可用。这些函数使用 uptimeMillis()时钟;如果设备进入睡眠状态,则剩余的时间将被推迟,直到设备唤醒。这些同步函数可能会被Thread.interrupt()中断,您必须处理InterruptedException。
好像你的手机处于闲置状态或节电状态,而且技术上没有睡觉......
答案 1 :(得分:2)
假设您正在谈论的按钮是“电源”或“锁定”按钮,则不一定会让设备进入深度睡眠状态。事实上,看看深度睡眠的定义(当正常运行时间计数器将停止时),我认为它将非常罕见。手机几乎肯定会使CPU保持低水平,以监控报警定时器和其他系统预定事件。如果您想要监控手机处于“睡眠”状态的时间(屏幕关闭,手机锁定等),我怀疑您需要注册广播接收器并监控这些特定事件。
看一下这个帖子Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF? 另请查看power manager