美文网首页
iOS 生命周期处理

iOS 生命周期处理

作者: 赫子丰 | 来源:发表于2019-03-05 17:38 被阅读0次
//当应用即将进从前台退出时调用,在此期间应用程序不接收消息或事件
- (void)applicationWillResignActive:(UIApplication *)application 
//当应用开始在后台运行的时候调用
- (void)applicationDidEnterBackground:(UIApplication *)application 
//当程序从后台将要重新回到前台(但是还没变成Active状态)时候调用
- (void)applicationWillEnterForeground:(UIApplication *)application 
//当应用即将进入前台运行时调用
- (void)applicationDidBecomeActive:(UIApplication *)application 
//当程序将要退出时被调用,通常是用来保存数据和一些退出前的清理工作
- (void)applicationWillTerminate:(UIApplication *)application 

对于各个阶段事件的处理可以放到上述代理方法中实现,或者在代码其他地方可以通过系统级通知来实现

目前项目中是通过通知的方式处理了以下事件:

UIApplicationWillResignActiveNotification:断开 socket 连接
UIApplicationDidBecomeActiveNotification: 
1.重建 socket 连接;2.判断是否需要指纹或者Face ID 登录
UIApplicationWillResignActiveNotification:断开 socket 连接
UIApplicationDidEnterBackgroundNotification: 
记录进入后台的时间,用于计算 App 再次进入前台时候的时间差

可扩展行为参考:这里

应用可以在applicationDidEnterBackground:方法中做些切向background状态前需要做的一些准备工作,当切向background状态时,所有的应用需要做以下事情:

(1)应用界面快照。当applicationDidEnterBackground:方法返回时,系统保存应用界面的快照,并且使用快照图片作为转换动画。如果在你的应用界面中有涉及到敏感信息的视图,则你应该在applicationDidEnterBackground:方法返回前隐藏或者修改这些视图。

(2)保存用户数据和应用状态信息。所有没有保存的改变都应该在切向background状态前写入磁盘以保存。这一步是必须的,因为你的应用在后台时很有可能因为多种其它原因而被很快kill掉。根据需要你可以在background thread后台线程中执行这些操作。

(3)释放尽可能多的内存资源。

applicationDidEnterBackground:方法允许最多有5秒的时间去完成任何任务然后返回。实际中,此方法应该尽可能快的返回。如果在时间到期之后,此方法没有返回,则应用即被kill掉,并且清除所占用的内存。如果你的应用确实需要更多的时间去执行任务,可以调用beginBackgroundTaskWithExpirationHandler:方法请求后台执行时间,然后启动一个能长期执行任务的线程。无论你是否启动一个执行后台任务的线程,applicationDidEnterBackground:方法都必须在5秒后退出。

相关文章

网友评论

      本文标题:iOS 生命周期处理

      本文链接:https://www.haomeiwen.com/subject/ezvouqtx.html