如果意外关闭,如何重新启动应用程序

时间:2012-05-01 08:07:13

标签: iphone ios sdk background restart

Skype update text包含下一个:

  

如果意外关闭,应用程序会自动重启

如何通过SDK执行该操作?

5 个答案:

答案 0 :(得分:14)

据我所知,某些应用程序可以在后台运行,并且可以在特定情况下重新启动。这是来自Apple docs

https://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/doc/uid/TP40007125

  

如果您启动此服务并且您的应用程序随后终止,则系统会在新事件到达时自动将应用程序重新启动到后台。在这种情况下,传递给应用程序的选项字典:didFinishLaunchingWithOptions:应用程序委托的方法包含密钥UIApplicationLaunchOptionsLocationKey,以指示您的应用程序是由于位置事件而启动的。

我的观点是:Skype重新启动了远程通知机制。

<强>更新

嗯,我想我找到了一些东西。 @Malek_Jundi是半对的。您的应用程序应该以非零退出代码失败,但应将其注册为VoIP应用程序。

  

由于VoIP应用程序需要保持运行才能接收传入呼叫,因此如果应用程序以非零退出代码退出,则系统会自动重新启动应用程序。 (这可能发生在存在内存压力且应用程序因此终止的情况下。)但是,终止应用程序也会释放其所有套接字,包括用于维护VoIP服务连接的套接字。因此,在启动应用程序时,它总是需要从头开始创建其套接字。

http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW12

答案 1 :(得分:3)

Skype正是这样做的:

  1. 为VoIP注册它的TCP套接字。
  2. 登录。
  3. 在非零退出代码后,应用程序将由iOS重新启动(因为VoIP应用程序需要保持运行才能接收来电,如果应用程序以非零退出代码退出,系统会自动重新启动应用程序。)。
  4. 然后立即启动后台任务(Relaunched应​​用程序仍然暂停)。
  5. 接下来它注册了它的VoIP登录套接字。
  6. 重新登录。

答案 2 :(得分:1)

据我所知,无法重新启动您的应用..您可以使用exit(1);杀死您的应用,但苹果不允许这样做,并会被拒绝。也许你通过从mainViewController中删除一些视图并重新添加它并重置数据和内容来做一些解决方法..但是重新启动我不这么认为。

答案 3 :(得分:1)

不确定Skype有什么但是 - 不幸的是,没有办法重启应用程序。甚至,没有办法退出/退出应用程序。 (有关退出,请参阅this链接部分“不要以编程方式退出”)

答案 4 :(得分:0)

问题是你为什么要这样做?如果你的答案是:你想让一个应用程序在“iPad Kiosk”中运行,那么万一它崩溃你需要应用程序自动重启,那么,会是什么为你工作的是iPad处于“ Kiosk模式”,操作系统会在崩溃的情况下自动重启应用程序。

看看:

http://www.webascender.com/Blog/ID/447/How-to-Setup-Kiosk-Mode-Lock-Your-iPad-to-Just-One-App

干杯,