我正在处理的应用程序在传播设置时出现问题,但一旦关闭并重新打开,它似乎工作正常。这是一个闹钟应用程序,因此它不会受益于多任务处理。由于我使用NSUserDefaults保存相关设置,因此我关闭了多任务处理:
@implementation MyAppDelegate
- (void) applicationDidEnterBackground:(UIApplication *)application {
exit(0);
}
...
@end
因此,此时用户必须手动关闭并重新打开应用程序。是否有可以发送的命令使应用程序关闭并重新打开(自动)?如果在屏幕上删除设置视图控制器时更改了某些设置,我希望该应用关闭并重新打开。
答案 0 :(得分:6)
您应该解决问题的根源,而不是强制您的应用程序在退出时关闭,这是一种糟糕的用户体验。
如果您在应用程序中设置了拒绝传播的设置问题,请尝试使用
[[NSUserDefaults standardUserDefaults] synchronize];
将设置刷新到磁盘。
如果您遇到的问题是在应用程序处于后台时在“设置”应用程序中更改了设置,请在应用程序中添加一个侦听这些设置中的更改的观察者:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleChangeInUserSettings:) name:NSUserDefaultsDidChangeNotification object:nil];
如果某些内容发生了变化,当您的应用程序返回到前台时,将触发。在此方法中,更新您的用户界面或应用程序的其他方面,需要使用更新的设置进行调整。
答案 1 :(得分:5)
不,您无法强制应用重启。在代码中使用exit()
会违反Apple HIG。
为了达到你想要的效果,我建议在更改设置时向用户显示警告,然后建议设置将在下次启动时生效。
您应该通过将UIApplicationExitsOnSuspend添加到info.plist并将其设置为true来禁用多任务处理。