按home键后,重新打开软件后2-3秒钟显示上次的页面

一、遇到的问题

1.我遇到的问题是,我的app在后台有大概180秒的执行时间,当我点击home键,程序进入后台,当我再次进入app的时候有2-3秒显示上次点击home键时的页面,然后进入正常状态。
2.在cocoaChina上搜到一个帖子,楼主遇到的问题和我的应该是同一类型,下面是楼主提问的内容:

按home键后手势上划强行关闭程序,重新打开软件后2-3秒钟显示上次的页面
是这样的:我打开我的软件,然后进去随便点到个页面,然后我连按2次Home键,手势上划将软件强行关闭。
然后我重新打开软件,显示的页面竟然是我上次退出时的那个页面,大概过2-3秒钟后,才回到软件的首页面。
这是什么原因造成的是要监听强行退出的操作,在里面写相关代码

原创地址:http://blog.csdn.net/Smiling8866/article/details/51271930

二、引起该问题的原因

该问题的原因就是app状态切换时,系统的snapShot(快照)引起的。系统的快照就是app在进行状态切换时系统记住app发生状态改变记录的一个机制。我们可以通过苹苹果官方文档:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html 中的what to Do When Your App Enters the Background模块中发现这个原因。

内容更详细:http://blog.csdn.net/Smiling8866/article/details/51271930

三、解决方法

那么出现这种问题既然是苹果自身的一个机制所产生的,到底应该如何去解决这种问题呢下是解决方案:
1. 当用户点击home键的时候,会执行AppDelegate中的
– (void)applicationWillResignActive:(UIApplication *)application
– (void)applicationDidEnterBackground:(UIApplication *)application
我们可以在这两个方法中的任意一个方法中为应用创建一个View,然后把这个View添加到系统的window上,让系统去snapShot这个View.此View专门被系统快照,一般可以定义一个和启动页一样的view.
2. 当用户启动App的时候,会触发AppDelegate中的
– (void)applicationDidBecomeActive:(UIApplication *)application
我们可以在这个方法中判断一下上次创建的那个View是否为空,如果不为空,则直接remove掉就可以了。

原创地址:http://blog.csdn.net/Smiling8866/article/details/51271930

四、代码

原创地址:http://blog.csdn.net/Smiling8866/article/details/51271930

来源:mediaios

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年3月25日
下一篇 2016年3月25日

相关推荐