如何防止应用程序/游戏在一段时间后恢复时崩溃

Posted

技术标签:

【中文标题】如何防止应用程序/游戏在一段时间后恢复时崩溃【英文标题】:How to prevent app/game from crashing upon resume after while 【发布时间】:2011-10-25 17:41:25 【问题描述】:

我使用 cocos2d 制作的游戏在离开一段时间后从后台恢复后在 ios5 上崩溃。我想知道处理发送到后台的应用程序的标准/最佳实践是什么。我会在一定时间后终止它吗?我看到有些游戏在您长时间恢复后会弹出加载屏幕,但当您立即恢复时,它会直接进入游戏。他们恢复时加载了什么?

任何指向正确方向的指针将不胜感激。

谢谢 交流

【问题讨论】:

【参考方案1】:

您可以通过adding UIApplicationExitsOnSuspend to your Info.plist 选择退出后台执行。

除此之外,确保您的应用在恢复执行时不会崩溃确实是您的工作。您必须了解您的应用程序基本上进入了暂停状态。这意味着它应该卸载所有不需要的资源,否则系统可能会终止您的应用进程。

在您的应用委托中,您应该回复applicationDidBecomeActive 消息并做出相应的响应,以便您的应用能够继续执行而不会出现任何问题。这可能包括加载任何已卸载的资产并检查系统设置(即区域设置、Game Center 用户等)是否已更改。

您也可以register a didBecomeActive UINotification,以便在应用应恢复时通知您应用中的任何课程。

【讨论】:

谢谢。我现在知道了。在 applicationWillResignActive 调用以下帮助是否会有所帮助? [[CCTextureCache sharedTextureCache] removeUnusedTextures]; [[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames]; 是的,但是有一个清除所有缓存的导向器“清除”消息 但是我想清除所有东西吗?那么这将需要我在恢复时重新加载所有内容,对吗?这安全吗? Cocos2D 会自动“重新加载”。但是您确实希望释放尽可能多的内存,因为当您的应用程序在后台时,您无法保留数兆字节的内存。如果在前台运行的另一个应用程序需要更多内存,iOS 可能会终止您的应用程序,而您的应用程序仍然使用大量未释放的内存。

以上是关于如何防止应用程序/游戏在一段时间后恢复时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

使用 Fragments 和 ViewPager 一段时间后,Android 应用程序崩溃

如何创建一个新线程并在一段时间后终止它?

Android logcat命令行在应用程序崩溃后输出文件

Unity 从崩溃的实例恢复您的场景

如何防止 SKAction 序列在解码后重新启动?

如何在Android中找到崩溃Cordova应用程序的内容?