我的应用程序中有一个计时器,我希望当我的应用程序在后台时它看起来正在运行。我希望如果用户在计时器显示时按下主页按钮,立即“01:11:11”,然后返回到应用程序,10 分钟后他就可以看到计时器,看到计时器为“01” :01:11”,但是我得到了一个瞬间,它显示了应用程序进入后台时的最后状态(“01:11:11”),然后才从正确的时间开始更新。
我认为我可以通过更新“applicationDidBecomeActive”中的计时器状态来纠正此问题,并且它确实在 Xcode 中的模拟器上工作,但在我的 Ipad 上不起作用。
我使用 cocos2d 进行绘图,这就是我在 applicationDidBecomeActive 中所做的事情:
CCScene *s=[director_ runningScene];
GameLayer *l=[(GameLayer*)[s getChildByTag:GAME_LAYER_TAG];
if (l!=nil) [l myUpdate];
我认为这与问题无关,因为 myUpdate 确实被调用了,但我的 iPad 上仍然出现瞬间故障,就好像无论如何它都会从最后的状态开始。
最佳答案
在苹果时钟应用程序中,在 applicationDidEnterBackground 中它隐藏了计时器文本,这样当应用程序进入前台时,您会在瞬间看到一个空白的 UI,您的应用程序正在 UI 中加载新的计时器数据。另外,您可能想在 applicationWillEnterForeground 中调用一些 applicationDidBecomeActive 代码,该代码首先被调用。但请记住,应用首次启动时不会调用 applicationWillEnterForeground。
您的应用进入前台与 UI 更新之间总会存在延迟。没有办法解决这个问题,所以你不妨使用苹果使用的方法来解决这个问题。
关于IOS:在应用程序可见之前强制更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16918283/