ios页面周期

iOS 专栏收录该内容
8 篇文章 0 订阅

UIApplicationDelegate 包含下面几个函数监控应用程序状态的改变:


当一个应用程序首先运行时,调用函数 didFinishLaunchingWithOptions,但此时应用程序还处于inactive状态,所以接着会调用 applicationDidBecomeActive函数,此时就进入了应用程序的界面了。

        接着当按下home键时(此时主界面是应用程序主界面),会调用 applicationWillResignActive函数,接着调用 applicationDidEnterBackground函数,这时手机回到桌面。
 
        当再按下应用程序图标时,(假设此时应用程序的内存还没有被其他的应用程序挤掉),调用 applicationWillEnterForeground函数,接着调用 applicationDidBecomeActive函数,此时又会到应用程序主界面。

        在应用程序的主界面,我们双击home键,(出现多任务栏),调用 applicationWillResignActive函数,点击上面部分又会回到程序中,调用 applicationDidBecomeActive函数,如果点击多任务栏的其他应用程序,则会调用 applicationDidEnterBackground函数之后,进入其他应用程序的界面。

    而对于 applicationWillTerminate函数,这里要说明一下:对于我们一般的应用程序,当按下home按钮之后,应用程序会处于一个suspended状态,如果现在去运行其他的程序,当内存不足,或者在多任务栏点击“减号”会完全退出应用程序,但是不管是哪一种,都不会去调用 applicationWillTerminate函数(针对IOS4以上),因此我们不能在此函数中保存数据。
    applicationWillTerminate函数在什么时间调用呢?我查了下资料,还在网上找了找,原来这与当应用程序按下home按钮之后,应用程序的状态有关,当状态为suspended时,是永远不会调用此函数的,而当状态为“后台运行”(running in the background)时,当内存不足或者点击“减号”时,才会调用此函数!官方的原话为:
Even if you develop your application using iPhone SDK 4 and later, you must still be prepared for your application to be terminated. If memory becomes constrained, the system might remove applications from memory in order to make more room. If your application is currently suspended, the system removes your application from memory without any notice. However, if your application is currently running in the background, the system does call the applicationWillTerminate:method of the application delegate. Your application cannot request additional background execution time from this method.

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值