iOS11 app生命周期变化Notification调用时机修改问题

背景

在iOS中,我们经常需要去了解App当前的程序状态。所以,我们常用监听app生命周期的Notification来做一些事情。
常用的app生命周期Notification有以下几个:

image.png

调查程序

而iOS11在开发中,我们发现,其中一些的Notification状态有发生变化,所以我写了一段测试程序,来测试调用时机的变化问题。
主要针对以下4种Notification

  • UIApplicationDidBecomeActiveNotification
  • UIApplicationWillResignActiveNotification
  • UIApplicationDidEnterBackgroundNotification
  • UIApplicationWillEnterForegroundNotification

以下为测试程序:

image.png

测试系统:
iOS10 10.3.3(14G60)
iOS11 11.0.3(15A432)

结果输出

1.退到后台,停顿,再回到前台

iOS10:

image.png

iOS11:

image.png

2.退到后台不停止回到前台

iOS10:

在回退动画过程中,明显感觉无法点击app

image.png

iOS11:

在回退动画过程中就可以点击app切到前台

image.png

3.下拉导航栏不松手直接上拉回去

iOS10:

image.png

iOS11:

无输出

4.下拉导航栏,松手,停顿,在上拉回去

iOS10:

image.png

iOS11:

image.png

5.后台状态,点击app(热启),立刻home切回后台

iOS10:

image.png

iOS11:

image.png

实验结果总结

以上有区别的组是:
2.退到后台不停止回到前台
3.下拉导航栏不松手直接上拉回去
5.后台状态,点击app,立刻home切回后台

总结出来iOS11统一的特点是:

  • UIApplicationDidEnterBackgroundNotification需要在回退动画做完后才会调用,中途打断(比如马上唤起app)就不会调用
  • 下拉导航栏操作不会再直接触发UIApplicationWillResignActiveNotification,需要等到下拉动画完成才会触发
  • 热启时候UIApplicationDidBecomeActiveNotification通知会更早的发出来

总结

image.png

参考资料

1.iOS应用生命周期

推荐阅读更多精彩内容