我的应用程序中有一个计时器,我希望它在我的应用程序在后台时显示正在运行。我希望如果用户在计时器显示时按下主页按钮,即时“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上仍然存在分裂的第二个故障,好像它从最后状态开始,无论如何。
答案 0 :(得分:1)
在apple clock应用程序中,在applicationDidEnterBackground中,它隐藏了计时器文本,这样当应用程序进入前台时,您会看到一个空白的用户界面,即应用程序在UI中加载新的计时器数据。此外,您可能希望在applicationWillEnterForeground中调用一些applicationDidBecomeActive代码,该代码首先被调用。但请记住,应用程序首次启动时,applicationWillEnterForeground会被非调用。
应用程序进入前台和UI更新之间总会有延迟。没有办法解决这个问题,所以你不妨用苹果用来解决这个问题。
答案 1 :(得分:0)
我试图在applicationWillResignActive和applicationDidEnterBackground中隐藏我的UI。由于首先调用applicationWillResignActive并且在进入预览之前(双击HOME)它会导致“不那么漂亮”的预览,但我认为至少它会解决我原来的问题。它没有(不是,在我的iPad上)。看起来系统甚至在applicationWillResignActive之前拍摄了屏幕截图。
我在官方时钟应用程序中检查了计时器,即使应用程序在后台(预览中),我看到时钟正在更新,所以他们“欺骗”无论如何......