美文网首页
响应应用的启动

响应应用的启动

作者: singmiya | 来源:发表于2018-06-05 10:18 被阅读16次

【译】为避免撕逼,提前声明:本文纯属翻译,仅仅是为了学习,加上水平有限,见谅!

初始化应用并准备运行

概述

UIKit做的大部分工作实际上是启动应用并准备运行。UIKit创建UIApplication对象用来管理应用,加载初始视图和视图控制器并开始应用主事件循环。UIKit也会创建应用委托——一个遵守UIApplicationDelegate协议的对象。新Xcode工程包含你可以自定义并用来处理特定启动任务的应用委托对象。在启动时使用这个对象执行下面的一些或所有任务:

  • 当应用第一次启动时,执行所需要的任何一次性设置。

  • 初始化应用数据结构。

  • 配置UI的视图和视图控制器。

  • 验证应用内容。

  • 启动应用任何需要运行的任务。例如,连接你需要的网络资源。

应用委托中有两个方法(如列表1所示)只在启动的时候调用。使用application:willFinishLaunchingWithOption:方法初始化应用数据结构并执行一次性设置任务。(这个方法调用的同时,UIKit已经从storyboard文件中加载了应用的默认用户界面。)使用application:didFinishLaunchingWithOption:方法去验证内容,更新用户默认的用户界面,并且可以启动任意任务。

列表1


class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]? = nil) -> Boll {

// Override point for customization after app launch,

// but before state restoration

return true

}

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

// Override point for app customization

// Perform final customization of your user interface.

}

}

应用的用户界面任然保持隐藏状态,直到两个初始化方法把控制权返回给UIKit。仅当应用无法正常运行的时才会同步的执行任务。例如,你必须同步的配置用户界面。在后台调度队列异步的启动其他的所有任务。特别的,在后台开始所有的网络请求,并在获取数据时让用户执行其他任务。

确定应用启动的原因

用户可以通过点击主屏上的图标来启动应用,系统还可以通过响应特定的事件启动应用。当系统启动应用时,它会在application:willFinishLaunchingWithOptions:和application:didFinishLaunchingWithOptions:方法传递的字典对象中提供启动原因。

使用在启动选项字典中的键去了解应用启动的原因并提供适当的响应。字典可能只包含在那存在的键。例如,如果应用在后台处理位置更新,当新位置事件可用的时候,字典就会包含UIApplicationLaunchOptionsLocationKey键。列表2展示了如何查找这个键,配置位置管理对象并启动位置服务,这会向位置管理委托发送一个事件。

列表2


class Application: UIResponder, UIApplicationDelegate, CLLocationManagerDelegate {

let locationManager = CLLocationManager()

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

// if launched because of new location data,

// start the visits service right away.

if let keys = launchOptions?.keys {

if keys.contains(.location) {

locationManager.delegate = self

locationManager.startMonitoringVisits()

}

}

return true

}

// other methods...

}

启动选项键值列表和关于如何处理它们的信息,请看UIApplicationLaunchOptionsKey

话题

启动时间

关于应用的启动顺序

了解自定义代码在启动时的执行顺序。

执行应用的一次性设置

保证应用环境可以正常的配置。

相关文章

  • 响应应用的启动

    【译】为避免撕逼,提前声明:本文纯属翻译,仅仅是为了学习,加上水平有限,见谅! 初始化应用并准备运行 概述 UIK...

  • Android app启动速度优化

    启动状态 应用有三种启动状态,每种状态都会影响应用向用户显示所需的时间:冷启动、温启动与热启动。在冷启动中,应用从...

  • Android-启动速度优化

    启动状态 应用有三种启动状态,每种状态都会影响应用向用户显示所需的时间:冷启动、温启动与热启动。在冷启动中,应用从...

  • Matrix源码分析系列-如何计算启动耗时

    什么是启动耗时 分为两个角度: 冷启动:就是点击应用图标到打开应用的冷启动响应时间,且前提是应用从未被创建过进程,...

  • 熬了3天3夜——深入探究Android应用启动起点

    背景 开发者文档中提到,Android应用有三种启动状态,每种状态都会影响应用向用户显示所需的时间:冷启动、温启动...

  • App启动优化——一顿操作猛如虎

    前言 一个应用App的启动速度能够影响用户的首次体验,用户希望应用能够及时响应并快速加载。启动时间过长的应用不能满...

  • Android App启动优化

    用户希望应用能够及时响应并快速加载。启动时间过长的应用可能会导致用户在对应用给出很低的评分,甚至完全弃用。 启动转...

  • 返回键退出Android Cordova应用

    Cordova版本 8.0.0 异常情况如下:Cordova应用启动后,在App首页点击返回键应用无响应,...

  • Android启动性能优化

    从两个方向优化应用的启动速度 视觉体验优化代码逻辑优化 应用程序启动有三种状态,每种状态都会影响应用程序对用户可见...

  • 通过基准配置文件改善应用性能

    启动时间的重要性 应用性能和用户参与度的相关性在许多应用中都有所体现。用户希望应用响应迅速且能快速加载,而 启动时...

网友评论

      本文标题:响应应用的启动

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