如何正确保存iOS应用程序状态?

如何正确保存iOS应用程序状态?,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,我正在开发一个音乐播放器应用程序,可以在后台播放音乐。只要音乐还在播放,应用程序就不会被终止,但是如果播放停止并且应用程序在后台,应用程序可能会被终止。为了让应用程序更加用户友好,我想保存播放队列和系统终止应用程序时的状态,因此我在应用程序委托中实现了以下几行: - (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder { /* Archive the

我正在开发一个音乐播放器应用程序,可以在后台播放音乐。只要音乐还在播放,应用程序就不会被终止,但是如果播放停止并且应用程序在后台,应用程序可能会被终止。为了让应用程序更加用户友好,我想保存播放队列和系统终止应用程序时的状态,因此我在应用程序委托中实现了以下几行:

- (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder
{
    /*
     Archive the current queue controller to be able to continue the playback like the app never has been terminated
     when user is launching it again.
     */
    SMKQueueController *queueController = [[UIApplication sharedApplication] queueController];
    [coder encodeObject:queueController forKey:@"queueController"];
    return YES;
}

- (BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder
{
    /*
     Restore the recently used queue controller to be able to continue the playback like the app never has been
     terminated when use is launching it again.
     */
    SMKQueueController *queueController = [coder decodeObjectForKey:@"queueController"];
    [[UIApplication sharedApplication] setQueueController:queueController];
    return YES;
}
有时(特别是当我通过双击home按钮菜单手动杀死它时),它的工作方式与我预期的一样。但是,有时在终止应用程序时不会调用此方法


所以我的问题是:我是否误解了这些方法的工作原理或者它们的用途?还是有更好的地方来实现这样的功能?

我参加了一个WWDC 2012会议,详细描述了如何实现这一功能。如果你是一名注册的苹果开发者,那么你可以从会话中访问视频。这篇文章的标题是“在iOS上保存和恢复应用程序状态”。我发现这是一个关于这个话题的非常有启发性的会议