iOS 应用程序启动时要做什么

当您的应用程序启动(无论是在前台或后台),使用您的应用程序委托application:willFinishLaunchingWithOptions:application:didFinishLaunchingWithOptions:方法来执行以下操作:

  • 检查启动选项字典的内容,了解有关启动应用程序的原因,并做出相应的响应。
  • 初始化您的应用程序的关键数据结构。
  • 准备您的应用程序的窗口和视图以供显示:

在启动时,系统会自动加载您的应用程序的main Storyboard加载初始视图控制器。

application:willFinishLaunchingWithOptions:application:didFinishLaunchingWithOptions:方法应该始终尽可能轻量级,以减少您的应用程序的启动时间。应用程序预计将启动,初始化UIWindow,并在不到5秒钟内开始处理事件。如果应用程序没有及时完成其启动周期,则系统会将其杀死而无法响应。因此,任何可能会减慢启动速度的任务(例如访问网络)都应该安排在辅助线程上执行。

当您的应用程序启动时,它将从未运行状态转移到活动状态或后台状态,并在非活动状态中短暂转换。作为启动周期的一部分,系统为您的应用程序创建一个进程和主线程,并main在该主线程上调用您的应用程序的功能。mainXcode项目附带的默认函数会立即将控制权移交给UIKit框架,UIKit框架完成初始化应用程序并准备运行的大部分工

下图显示了将应用程序启动到前台时发生的事件序列,包括调用的应用程序委托方法。

当您的应用程序启动到后台时(通常是为了处理某种类型的后台事件),启动周期会稍微改变为下图所示的状态。主要区别在于,您的应用不是处于活动状态,而是进入后台状态以处理该事件,并可能在此之后的某个时刻暂停。在启动到后台时,系统仍会加载应用的用户界面文件,但不会显示应用的窗口。

要确定您的应用程序是启动到前台还是后台,请在您的或委托方法中检查applicationState共享UIApplication对象的属性。当应用程序启动到前台时,此属性包含该值。当应用程序启动到后台时,该属性将包含该值。您可以使用此差异来相应地调整委托方法的启动时间行为。

application:willFinishLaunchingWithOptions:

application:didFinishLaunchingWithOptions:

UIApplicationStateInactive

UIApplicationStateBackground

应对临时中断

当发生基于警报的中断(例如来电)时,应用程序暂时移至不活动状态,以便系统可以提示用户如何进行。该应用程序保持这种状态,直到用户解散警报。此时,应用程序将返回到活动状态或移动到后台状态。
显示了发生基于警报的中断时,通过您的应用程序发生的事件流。

当您的应用程序进入前台时该怎么做

回到前台,您的应用程序有机会重新启动它移到后台时停止的任务。移动到前台时出现的步骤如图4-4所示。该applicationWillEnterForeground:方法应该撤销在您的applicationDidEnterBackground:方法中完成的任何操作,并且该applicationDidBecomeActive:方法应该继续执行与启动时相同的激活任务。

以上查阅与苹果官方文档, 原文地址:

https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforHandlingAppStateTransitions/StrategiesforHandlingAppStateTransitions.html#//apple_ref/doc/uid/TP40007072-CH8-SW2

原文地址:https://www.cnblogs.com/quxiangfu/p/8442641.html

时间: 2024-10-11 15:16:07

iOS 应用程序启动时要做什么的相关文章

iOS核心笔记——iOS应用程序启动原理

1.iOS应用程序启动示例图: 2.应用程序启动原理: 2-1.不通过storyboard文件启动: 执行main函数: 执行main函数中的UIApplicationMain函数,创建UIApplication对象,创建ApplicationDelegate对象并将其设置为UIApplication对象的代理: 程序启动完毕,开启消息循环(Main RunLoop).监听事件并调用注册方法:接着调用代理的application:didFinishLaunchingWithOptions:方法:

iOS App初次启动时的用户引导页制作实例分享

iOS App初次启动时的用户引导页制作实例分享 作者:老初 字体:[增加 减小] 类型:转载 时间:2016-03-09我要评论 这篇文章主要介绍了iOS App初次启动时的用户引导页制作实例分享,其中判断程序是否是第一次或版本更新以后第一次启动是一个关键点,需要的朋友可以参考下 应用程序APP一般都有引导页,引导页可以作为操作指南指导用户熟悉使用:也可以展现给用户,让用户了解APP的功能作用.引导页制作简单,一般只需要一组图片,再把图片组展现出来就可以了.展示图片组常用UIScrollVie

如何在ASP.NET Core程序启动时运行异步任务(2)

原文:Running async tasks on app startup in ASP.NET Core (Part 2) 作者:Andrew Lock 译者:Lamond Lu 在我的上一篇博客中,我介绍了如何在ASP.NET Core应用程序启动时运行一些一次性异步任务.本篇博客将继续讨论上一篇的内容,如果你还没有读过,我建议你先读一下前一篇. 在本篇博客中,我将展示上一篇博文中提出的"在Program.cs中手动运行异步任务"的实现方法.该实现会使用一些简单的接口和类来封装应用

java程序 启动时参数

iEMP34:/opt/version/lktest/b030/jre/jre_linux/bin # ./java -classpath . SysInfo Exception in thread "main" java.lang.NoClassDefFoundError: org/hyperic/sigar/SigarException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.

Android应用程序启动时发生AndroidRuntime : ClassNotFoundException for Activity class的解决方法

在android应用程序启动时抛出下面异常导致启动失败:07-09 17:12:35.709: ERROR/AndroidRuntime(3866): Uncaught handler: thread main exiting due to uncaught exception 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): java.lang.RuntimeException: Unable to instantiate activity Com

SpringBoot程序启动时执行初始化代码

因项目集成了Redis缓存部分数据,需要在程序启动时将数据加载到Redis中,即初始化数据到Redis. 在SpringBoot项目下,即在容器初始化完毕后执行我们自己的初始化代码. 第一步:创建实现ApplicationListener接口的类 package com.stone; import com.stone.service.IPermissionService; import org.springframework.context.ApplicationListener; import

iOS中程序启动流程

1.任何一个程序,无论是基于Mac OS 还是 iOS,程序都是从main.m文件的main函数开始执行的. #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]))

12.ios之程序启动原理

掌握 ?Info.plist和pch文件的作用 ?UIApplication的常见使用 ?AppDelegate的代理方法 ?UIApplication.AppDelegate.UIWindow.UIViewController的关系 ?iOS程序的完整启动过程 项目中常见文件 Info.plist常见的设置 ?建立一个工程后,会在Supportingfiles文件夹下看到一个"工程名-Info.plist"的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 ?在旧版本Xcod

iOS的程序启动原理

一.程序启动原理 1.首先找到程序入口,执行main函数 main -> UIApplicationMain 2.UIApplicationMain底层做事情 1> 创建UIApplication对象 2> 创建UIApplication的代理对象,而且给UIApplication对象代理属性赋值 3> 开启主运行循环,作用接收事件,让程序一直运行 4> 加载info.plist,判断下有木有指定main.storyboard,如果指定就会去加载 3.创建UIWindow 1