如何确保iOS应用程序不会无限期地在后台暂停?

时间:2013-02-07 23:27:27

标签: ios objective-c ipad

我们的iOS应用程序每次新启动时都会检索新的应用数据,即不从后台恢复。应用程序数据每两个月通过Web服务定期更新,因此通常很好。

然而,可能存在边缘情况,用户的iOS设备 - 特别是iPad - 可能会使应用程序在后台暂停一段时间 - 可能无限期。

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

2 个答案:

答案 0 :(得分:3)

您描述的问题是由于应用程序设计不佳或对应用程序架构的理解不足。如果您需要在应用程序变为活动状态时刷新应用程序数据,您只需从UIApplicationDelegate事件中调用更新功能(或注册通知),具体为:

  

applicationDidBecomeActive:

     

告诉代理该应用程序已变为活动状态。    - (void)applicationDidBecomeActive:(UIApplication *)application parameters

     

应用

The singleton application instance.
     

讨论

     

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

     

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

     

调用此方法后,应用程序也会发布一个   UIApplicationDidBecomeActiveNotification通知给出   有兴趣的对象有机会回应过渡。可用性

答案 1 :(得分:0)

当应用暂停时,它不应该令人耳目一新。根据Apple的文档,除非您的应用已注册其中一个特定的后台进程,否则应用程序基本上会被冻结,直到恢复为止。不应该进行任何网络呼叫。

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