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

标签 iphone ios6 save state

我的应用程序的最低支持iOS版本是iOS5。而且我没有做任何状态保存和恢复。 它在我自己的 iphone4 上运行良好,但一些用户提示当他们接听电话或切换到其他应用程序并返回时,该应用程序会被重置。
因此,我更加重视状态恢复,我想将其添加到我的应用程序中。 不过我有相册功能,所以我调用ALAssetLibrary。
我需要创建与原来完全相同的缩略图 View 。
我在操作队列中有一些后台操作,所以我需要知道它们的状态并添加未完成的后台操作。有点复杂。 这是我的问题。
1.我没有找到有用的示例代码、项目。 (WWDC2012的session208,但是他们没有在WWDC示例代码发布中发布代码),你知道吗?
2.最好的方法是什么?遵循iOS6还是自己做?
有什么区别。
3. 对于ALAssetlibrary,图片缩略图查看,如何实现状态保存和恢复?

最佳答案

一定要使用Apple的API,不要重新发明轮子。 WWDC 2012 session about this以WWDC 2012应用程序为例来展示该功能,但从未有任何演示项目可以分享给开发者。然而,他们(最近)发布了一个演示来演示它,您可以在这里找到它:http://developer.apple.com/library/ios/#samplecode/StateRestore/Introduction/Intro.html

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

对于您的 ALAssetlibrary 问题,您将在 View Controller 的 encodeRestorableStateWithCoder: 实现中将 ID 保存到当前图像,请确保您阅读了文档,您需要遵守协议(protocol),如果您使用代码或使用 xibs(不使用 Storyboard ),请设置恢复类...您可以通过执行以下操作来保存 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.
}

请注意,我在编码方法中最后调用了 super,但在解码方法中首先调用了super

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

关于iphone - iOS6应用程序状态保存和恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897775/

相关文章:

iphone - iOS IMAP 库

iphone - UIDatePicker DidSelectRow 方法?

ios - 每次我添加新设备时,为什么会出现多个 AdHoc 配置文件?

ios - 将图像从网络服务器保存到手机以用于图像 slider

iphone - cocos2d位置坐标

ios - UICollectionView:如何检测滚动何时停止

objective-c - 为什么我在 Xcode 的设备菜单中没有任何配置文件?如何解决这个问题?

android - 使用 FMOD 将输出保存到文件

vba - 忘记保存excel宏

iphone - 如何防止在 phone-gap 中运行的应用程序垂直滚动?