gpt4 book ai didi

ios - 获取 iOS 系统正常运行时间, sleep 时不会暂停

转载 作者:IT王子 更新时间:2023-10-29 07:40:30 25 4
gpt4 key购买 nike

我正在寻找一种在 iOS 上获得绝对的、始终递增的系统正常运行时间的方法。

它应该返回自设备上次重启以来的时间,并且不受系统日期更改的影响。

我能找到的所有方法要么在设备休眠时暂停(CACurrentMediaTime[NSProcessInfo systemUptime]mach_absolute_time),要么被更改当系统日期更改时 (sysctl/KERN_BOOTTIME)。

有什么想法吗?

最佳答案

我想我已经解决了。

time() 在设备休眠时继续递增,但当然可以由操作系统或用户操作。但是,内核启动时间(系统上次启动时间的时间戳)也会在系统时钟更改时更改,因此即使这两个值不固定,它们之间的偏移量也是固定的。

#include <sys/sysctl.h>

- (time_t)uptime
{
struct timeval boottime;
int mib[2] = {CTL_KERN, KERN_BOOTTIME};
size_t size = sizeof(boottime);
time_t now;
time_t uptime = -1;

(void)time(&now);

if (sysctl(mib, 2, &boottime, &size, NULL, 0) != -1 && boottime.tv_sec != 0) {
uptime = now - boottime.tv_sec;
}

return uptime;
}

关于ios - 获取 iOS 系统正常运行时间, sleep 时不会暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12488481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com