如何在iOS中以编程的方式重新启动或重新加载iPhone应用程序

7
我已经下载了一个包含一些更新参数的xml文件,然后我需要重新加载这些参数并初始化一些视图。最简单的方法是在下次应用启动时应用此配置。有没有办法通过编程方式重新启动iOS应用程序
谢谢。
5个回答

9
重新启动应用程序是一个不好的想法,我相信苹果会拒绝它。然而,您可以显示一个弹窗告诉用户关闭并重新打开应用程序以应用您的更新信息。但最好的方法是手动调用需要重建应用程序的方法(即需要使用更新数据的方法)。如果您必须进行一些大量的重建工作(即用户会立即注意到的事情),可能最好加入一个“加载”进度条。

4

你不需要重新启动应用程序,我也不明白为什么你需要这样做。并且,我认为你永远都不会想要这样做。


我知道这种感觉,但当客户想要应用程序特定的语言环境配置(我也不喜欢)而又不愿为正确完成它所需的实际工作付费时,你会怎么做? - Mattias Wadman
你可以指向合同中关于“范围”和额外费用的条款。无论如何,祝你好运 - Amit 的答案是完美的。 - sosborn
谢谢。我已经为Amit的答案点了赞,并且我会删除我的回答,因为你让我想起了我有多么讨厌那个解决方案。 - Mattias Wadman
一个可能性很小但仍有可能发生的情况是,如果你的故事板维护的控制器被 ARC 释放了。我曾经见过这种情况发生过一次。此时最好的做法是退出而不是试图保存它。 - Nick Turner

2
您可以通过一些用户帮助来退出并重新启动iOS应用程序。设置应用程序的plist键以在挂起时退出应用程序。为您的应用程序创建一个本地通知,触发未来几秒钟。然后向Safari发送一个URL。当启动Safari处理URL时,操作系统将终止您的应用程序。该URL可能是指向Web着陆页面,告诉用户正在进行重新启动。然后,本地通知将触发并要求用户重新启动您的应用程序。
但是,应用程序应该(重新)设计,以便永远不需要这样做。

1

只有在您的设备越狱后才能这样做。

在您的应用程序中放置一个重新启动按钮并调用abort();。这将使应用程序崩溃。

SBApplication挂钩-(void)exitedAbnormally;并编写代码来启动您的应用程序。

如果没有越狱,您别无选择。


exit(0)将在不越狱的情况下退出应用程序。 - Nick Turner

0

如果您正在为越狱设备开发应用程序,可以使用uicache命令清除SpringBoard缓存并重新加载新的应用程序/图标(该命令可从UIKit包中获取)。

例如:

1)如果您是root用户:

    su mobile -c uicache 1>/dev/null 2>&1

2) 如果你在使用移动设备:

    uicache

如果需要重启,您可以在root权限下使用reboot命令,如果需要重新加载SpringBoard,则可以使用killall SpringBoard命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接