我正在寻找一种在Xamarin iOS上获得绝对,始终递增的系统正常运行时间的方法。
它应该返回自上次重新启动设备以来的时间,并且不受系统日期更改的影响。
我可以找到的所有方法要么在设备休眠时暂停(CACurrentMediaTime,[NSProcessInfo systemUptime],mach_absolute_time),要么在系统日期更改时更改(sysctl / KERN_BOOTTIME)。
am使用以下代码,但它返回一个常数:
public static TimeVal GetBoottime()
{
var pLen = Marshal.AllocHGlobal(sizeof(int));
sysctlbyname("kern.boottime", IntPtr.Zero, pLen, IntPtr.Zero, 0);
var length = Marshal.ReadInt32(pLen);
var pStr = Marshal.AllocHGlobal(length);
sysctlbyname("kern.boottime", pStr, pLen, IntPtr.Zero, 0);
return Marshal.PtrToStructure<TimeVal>(pStr);
}