-1

我们的 iOS 应用程序每次新启动(即未从后台恢复)时都会检索新的应用程序数据。应用程序数据每隔几个月通过网络服务定期更新,所以这通常很好。

但是,在某些极端情况下,用户的 iOS 设备 - 特别是 iPad - 可能会使应用程序在后台暂停很长一段时间 - 可能是无限期的。

是否可以通过告诉 iOS“如果该应用程序已暂停超过几个小时,请释放此应用程序”来缓解这种边缘情况?

4

2 回答 2

3

您描述的问题是由于糟糕的应用程序设计或对应用程序架构的理解不足。如果您需要在应用程序激活时刷新应用程序数据,您可以简单地从UIApplicationDelegate事件(或注册通知)中调用更新函数,特别是:

applicationDidBecomeActive:

告诉代理应用程序已激活。- (void)applicationDidBecomeActive:(UIApplication *)application 参数

应用

The singleton application instance.

讨论

调用此方法是为了让您的应用程序知道它已从非活动状态变为活动状态。这可能是因为您的应用程序是由用户或系统启动的。如果用户选择忽略将应用程序暂时发送到非活动状态的中断(例如来电或短信),应用程序也可以返回到活动状态。

您应该使用此方法重新启动在应用程序处于非活动状态时暂停(或尚未启动)的任何任务。例如,您可以使用它来重新启动计时器或提高 OpenGL ES 帧速率。如果您的应用程序以前在后台,您还可以使用它来刷新应用程序的用户界面。

调用此方法后,应用程序还会发布 UIApplicationDidBecomeActiveNotification 通知,让感兴趣的对象有机会响应转换。可用性

于 2013-02-07T23:34:28.513 回答
0

当应用程序暂停时,它不应该刷新。根据 Apple 的文档,除非您的应用程序已注册特定后台进程之一,否则该应用程序基本上会被冻结,直到它恢复。不应该进行任何网络调用。

但是,如果您确实想在应用程序暂停时间过长后将其终止,您可以实施一个 hack,将后台计时器注册 10 分钟,然后在 10 分钟后调用一些您知道会崩溃的垃圾代码。问题解决了 :)

于 2013-02-07T23:38:33.440 回答