IOS:在应用程序可见之前强制更新

标签 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 上仍然出现瞬间故障,就好像无论如何它都会从最后的状态开始。

最佳答案

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

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

关于IOS:在应用程序可见之前强制更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16918283/

相关文章:

iphone - 如何让一个 b2Body 忽略另一个 b2Body?

ios - xcode-阻止音频文件相互播放

iOS:UISearchBar 显示为有色

ios - objective-c -具有多个测试输入的单元测试最佳实践

ios - 如何在cocos2d中针对特定场景实现手势

ios - Cocos2d 返回 Sprite body 上的触摸位置

ios - 快速从 ccPhysicsCollisionBegin 返回 bool 时崩溃

ios - 我在 main.m 中有内存泄漏,是什么原因导致的?

android - url_launcher : canLaunch/launch don't work on iOS for simple URL scheme?

objective-c - 找到最近的CCSprite