有一天,公司的网络出现的问题,所有的机器都不能访问外网了。突然我发现一直运行正常的iPad应用在启动时经过较长时间的等待后就退出了。

第一反应:是不是对网络通信的处理有问题,导致程序崩溃?那就进入debug跟踪一下吧。奇怪的是,在debug模式下,尽管启动时间较长,但仍然能正常运行下去。(启动时间长的原因是,启动时需要访问服务器,获取数据,由于网络有问题,时间就长了)

我一度怀疑是不是ios的bug,但我试了很多其他的应用,为什么其他应用都能正常运行呢?

经过长时间的google,终于对这个问题的产生理解的越来越清楚了。(google是需要技巧的,不合适的关键字往往找不到想要的答案,不要放弃,多尝试,要相信你不是第一个遇到这个问题的人)

原来,启动时间太长,ios会认为应用不用正常启动,所以把应用直接给退出了。并不是应用崩溃了。

那为什么debug时没有这个问题呢? 参见文档: http://developer.apple.com/library/ios/#qa/qa2009/qa1592.html

如此看来,解决问题的办法就是尽快的结束启动过程。网络访问通过线程解决,这样就不会阻塞主线程的运行了。

参见: http://iphone.demay-fr.net/2010/05/don’t-perform-network-reachability-tests-in-applicationdidfinishlaunching/

最后,为什么网络有问题时通信时间就很长呢?我已经设置了timeout为20秒,显然远远大于这个时间。原来,建立网络连接前需要做域名解析,但网关出现问题后,dns解析也不正常了。dns的超时时间似乎是应用控制不了的。

iPad开发-应用启动时崩溃的原因相关推荐

  1. 微信开发工具启动时提示无法定位程序输入点ReleaseSRWLockExclusive于动态链接库kernel32.dll 上

    微信开发工具启动时提示: 无法定位程序输入点ReleaseSRWLockExclusive于动态链接库kernel32.dll上 原因: 微信开发工具不支持Windows XP系统,只支持Win7以上 ...

  2. Matlab 2015b 启动时崩溃 MATLAB crashes during startup on Ubuntu 16.04

    Matlab 启动时崩溃 MATLAB crashes during startup on Ubuntu Matlab 2015B Ubuntu 16.04 之前解决过,更新后问题又来了.     出 ...

  3. matlab2015崩溃,Matlab 2015b 启动时崩溃 MATLAB crashes during startup on Ubuntu 16.04

    Matlab 启动时崩溃 MATLAB crashes during startup on Ubuntu Matlab 2015B Ubuntu 16.04 之前解决过,更新后问题又来了. 出错信息如 ...

  4. 拼接符 防注入正则校验_SpringBoot 开发秘籍 启动时配置校验

    概述 在项目开发过程中,某个功能需要依赖在配置文件中配置的参数.这时候就可能出现下面这种现象问题: 有时候经常出现项目启动了,等到使用某个功能组件的时候出现异常,提示参数未配置或者bean注入失败. ...

  5. 开发板启动时,内核打印出can't access tty,job control turned off

    启动后的最后一行提示can't access tty,job control turned off, 这说明没有进入到控制台,原因就在于文件系统的/etc/inittab 这个文件里有问题 vi /e ...

  6. 【SpringBoot】 启动时,修改默认配置文件名称

    前言 spring boot version : 2.0.0.RELEASE maven version : 3.5.0 在不同的环境下,依赖的外部资源是不一样的.比如,在windows上开发,在li ...

  7. jvm崩溃的原因_JVM崩溃时:如何调查最严重错误的根本原因

    jvm崩溃的原因 当应用程序崩溃时,您可以学到什么? 我认为,"后见之明是20 /"是最喜欢的短语之一托马斯·罗梅尔 ,工程ZeroTurnaround的副总裁. 好吧,我实际上不 ...

  8. iPad开发(相对于iPhone开发时专有的API)

    iPad开发 一.iPad开发简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定价介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2. ...

  9. docker jvm调优 tomcat_docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞

    docker+tomcat 启动时非常慢,一般正常启动几十秒的,发现docker+tomcat启动竟需要几分钟,不可思议 根本原因是 SecureRandom 这个 jre 的工具类的问题.那为什么 ...

最新文章

  1. IPMSG飞鸽传书——编译源代码的方法
  2. 在Java中如何高效的判断数组中是否包含某个元素
  3. Asp.net 中使用单独类文件
  4. hoj 2739 中国邮局问题
  5. linux符号命令,Linux_几个符号命令(示例代码)
  6. Linux内核中的同步原语:自旋锁,信号量,互斥锁,读写信号量,顺序锁
  7. 啤酒与尿布,咩叔原创基于图论简单到爆的实时关联性算法
  8. Linux I2C总线驱动调试之i2c-tools工具使用
  9. 局域网测试工具、局域网UDP、TCP端口诊断工具
  10. FPGA综合项目——SDRAM控制器
  11. Excel技巧:如何将数值改成以万为单位,且保留小数点两位?
  12. Kettle之定时运行Job
  13. sap--TCODE 之 SE93 将事务代码分配给程序(转)
  14. APP下载链接在微信内打不开显示已停止访问该网页怎么办?
  15. 掌门教育:品质为本,全面打造高质量教学核心驱动力
  16. HttpClient 实现酷狗 Top500 音乐下载
  17. Jquery----下拉菜单(利用滑动效果)
  18. 数字IC设计——跨时钟域篇1(时钟域)
  19. python输出语句print i、j、k_Python的打印使用,python,之,print,用法
  20. 用Python算累加求和问题

热门文章

  1. 红眼病患者有很多注意事项,尤其是在饮食上
  2. 2022年山东省职业院校技能大赛高职组信息安全管理与评估
  3. 《炬丰科技-半导体工艺》清洗硅片两步法
  4. kali防火墙命令集合
  5. 一、H.266新增技术
  6. 查无此人!冒充中科大少年班校友的 AI 公司 CEO 被官方实锤
  7. [C++] STL介绍及string的模拟实现
  8. 计算机中用户权利和用户权限,用户权限和特权
  9. linux 内核驱动的poll,详细解读Linux内核的poll机制
  10. Qt for Android开发入门