0

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

4

2 回答 2

1

在苹果时钟应用程序中,在 applicationDidEnterBackground 中它隐藏了计时器文本,因此当应用程序进入前台时,您会在瞬间看到空白 UI,您的应用程序正在 UI 中加载新的计时器数据。此外,您可能希望在首先调用的 applicationWillEnterForeground 中调用一些 applicationDidBecomeActive 代码。但请记住,应用程序首次启动时不会调用 applicationWillEnterForeground。

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

于 2013-06-04T13:05:01.817 回答
0

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

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

于 2013-06-04T14:47:15.890 回答