iOS6应用程序状态保存和恢复



我的应用程序最低支持iOS版本是iOS5。我没有做任何州的保存和恢复。它在我自己的iphone4上运行良好,但一些用户抱怨,当他们接到电话或换到其他应用程序后,该应用程序会重置
所以,我更重视状态恢复,我想把它添加到我的应用程序中。但是,我有相册功能,所以我调用ALAssetLibrary
我需要创建完全相同的缩略图视图
我在operationQueue中有一些后台操作,所以我需要知道它们的状态并添加未完成的后台操作。这有点复杂。以下是我的问题
1。我没有找到有用的示例代码,项目。(WWDC2012中的session208,但他们没有在WWDC示例代码发布中发布代码),你知道吗
2。最好的方法是什么?遵循iOS6还是自己做<有什么不同>
3。对于ALAssetlook,图像缩略图查看,如何实现状态保存和恢复?

一定要使用苹果的API,不要重新发明轮子。关于这一点,WWDC 2012会议以WWDC 2012应用程序为例展示了这一功能,但从未有任何演示项目可与开发人员共享。然而,他们(最近)发布了一个演示来演示它,你可以在这里找到它:http://developer.apple.com/library/ios/#samplecode/StateRestore/Introduction/Intro.html

听起来你的状态很复杂,我不确定你是否真的想恢复那些后台操作。你可能会发现将用户恢复到应用程序中更稳定的部分会更好。

对于您的ALAssetlook问题,您将在视图控制器的encodeRestorableStateWithCoder:实现中为当前图像保存一个ID,确保您阅读了文档,您需要遵守协议,如果您在代码中或使用xibs(不使用故事板),则设置一个恢复类。。。你可以这样保存ID:

NSString * const ImageReferenceIDKey = @"ImageReferenceID";
- (void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
NSString *objectID = nil; // get some ID that can relocate your image
[coder encodeObject:objectID forKey:ImageReferenceIDKey];
[super encodeRestorableStateWithCoder:coder];
}
- (void)decodeRestorableStateWithCoder:(NSCoder *)coder
{
[super decodeRestorableStateWithCoder:coder];
NSString *objectID = [coder objectForKey:ImageReferenceIDKey];
// get into the ALAssetlibrary and use the objectID to restore which image you had.
}

请注意,我在encode方法中最后调用super,但在decode方法中首先调用。

你应该非常小心用户更改了你访问他们照片的隐私,不要崩溃,如果你试图恢复照片,请确保你仍然有这样做的权限,否则你可能会崩溃。

最新更新