IOS:在app变为可见之前强制更新

时间:2013-06-04 12:48:48

标签: ios cocos2d-iphone

我的应用程序中有一个计时器,我希望它在我的应用程序在后台时显示正在运行。我希望如果用户在计时器显示时按下主页按钮,即时“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上仍然存在分裂的第二个故障,好像它从最后状态开始,无论如何。

2 个答案:

答案 0 :(得分:1)

在apple clock应用程序中,在applicationDidEnterBackground中,它隐藏了计时器文本,这样当应用程序进入前台时,您会看到一个空白的用户界面,即应用程序在UI中加载新的计时器数据。此外,您可能希望在applicationWillEnterForeground中调用一些applicationDidBecomeActive代码,该代码首先被调用。但请记住,应用程序首次启动时,applicationWillEnterForeground会被调用。

应用程序进入前台和UI更新之间总会有延迟。没有办法解决这个问题,所以你不妨用苹果用来解决这个问题。

答案 1 :(得分:0)

我试图在applicationWillResignActive和applicationDidEnterBackground中隐藏我的UI。由于首先调用applicationWillResignActive并且在进入预览之前(双击HOME)它会导致“不那么漂亮”的预览,但我认为至少它会解决我原来的问题。它没有(不是,在我的iPad上)。看起来系统甚至在applicationWillResignActive之前拍摄了屏幕截图。

我在官方时钟应用程序中检查了计时器,即使应用程序在后台(预览中),我看到时钟正在更新,所以他们“欺骗”无论如何......