我使用这段代码来跟踪最近一次重启的时间:
+ (float) secondsSinceLastReboot{
return ((float)(mach_absolute_time())) * ((float)timebase.numer) / ((float)timebase.denom) / 1000000000.0f;
}
我曾认为mach_absolute_time()是基于设备上一次启动时间的,就像Mac上一样。但它似乎不是以此为基础。实际上,我不知道它基于什么。
看看以下行为(今天的日期是2009-09-20):
lastRebootTime = [[NSDate date] addTimeInterval:-[self secondsSinceLastReboot]];
//last Reboot Time will contain : 2009-09-20 07:42:14 +0100
我绝对确定那个时候没有重新启动我的设备。我的设备已经一个星期没有启动了。
此外,当我拔掉设备的线缆并运行这个应用程序时,似乎当设备进入睡眠状态时,lastRebootTime会开始向未来移动。似乎 mach_absolute_time
没有考虑到睡眠时间。或者我理解错了?
我真的很想能够获取设备上次重启的时间戳。有什么想法吗?