背景
在iOS中,我们经常需要去了解App当前的程序状态。所以,我们常用监听app生命周期的Notification来做一些事情。
常用的app生命周期Notification有以下几个:
调查程序
而iOS11在开发中,我们发现,其中一些的Notification状态有发生变化,所以我写了一段测试程序,来测试调用时机的变化问题。
主要针对以下4种Notification
- UIApplicationDidBecomeActiveNotification
- UIApplicationWillResignActiveNotification
- UIApplicationDidEnterBackgroundNotification
- UIApplicationWillEnterForegroundNotification
以下为测试程序:
测试系统:
iOS10 10.3.3(14G60)
iOS11 11.0.3(15A432)
结果输出
1.退到后台,停顿,再回到前台
iOS10:
iOS11:
2.退到后台不停止回到前台
iOS10:
在回退动画过程中,明显感觉无法点击app
iOS11:
在回退动画过程中就可以点击app切到前台
3.下拉导航栏不松手直接上拉回去
iOS10:
iOS11:
无输出
4.下拉导航栏,松手,停顿,在上拉回去
iOS10:
iOS11:
5.后台状态,点击app(热启),立刻home切回后台
iOS10:
iOS11:
实验结果总结
以上有区别的组是:
2.退到后台不停止回到前台
3.下拉导航栏不松手直接上拉回去
5.后台状态,点击app,立刻home切回后台
总结出来iOS11统一的特点是:
- UIApplicationDidEnterBackgroundNotification需要在回退动画做完后才会调用,中途打断(比如马上唤起app)就不会调用
- 下拉导航栏操作不会再直接触发UIApplicationWillResignActiveNotification,需要等到下拉动画完成才会触发
- 热启时候UIApplicationDidBecomeActiveNotification通知会更早的发出来