计算应用在后台运行的时间

时间:2017-11-14 10:43:42

标签: c# android unity3d

我正在使用GearVR和三星手机构建VR体验。

我已经尝试弄清楚应用程序已经存在了多长时间"在后台"当OnApplicationPause被触发时,以及随后OnApplicationFocus

我知道应用程序在后台处理时没有处理任何内容,所以做一个简单的计时器'不会工作,因此如下:

private float pausedAt;

void OnApplicationPause(bool pauseStatus)
{
    pausedAt = Time.realtimeSinceStartup;
}

void OnApplicationFocus(bool hasFocus)
{
    if (Time.realtimeSinceStartup > pausedAt + 60) { // 60 for 1 minute AFK
         ResetExperience();
    }
}

这似乎没有用,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

您当前代码的问题在于,您还没有在let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "popUpVC") as! PopUpViewController self.addChildViewController(popOverVC) self.view.addSubview(popOverVC.view) popOverVC.didMove(toParentViewController: self) 中获得pausedAt值。您必须这样做,因为OnApplicationFocus(false)仅在特定时间被调用。另外,使用Time.time代替OnApplicationPause执行此操作。

当游戏在Time.realtimeSinceStartupOnApplicationPause暂停时,Time.time获得时间,然后在OnApplicationFocus(false)恢复时再次获得时间。减去它们以获得应用在后台等待的实际时间。

OnApplicationFocus(true)