iPad开发-应用启动时崩溃的原因
有一天,公司的网络出现的问题,所有的机器都不能访问外网了。突然我发现一直运行正常的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开发-应用启动时崩溃的原因相关推荐
- 微信开发工具启动时提示无法定位程序输入点ReleaseSRWLockExclusive于动态链接库kernel32.dll 上
微信开发工具启动时提示: 无法定位程序输入点ReleaseSRWLockExclusive于动态链接库kernel32.dll上 原因: 微信开发工具不支持Windows XP系统,只支持Win7以上 ...
- Matlab 2015b 启动时崩溃 MATLAB crashes during startup on Ubuntu 16.04
Matlab 启动时崩溃 MATLAB crashes during startup on Ubuntu Matlab 2015B Ubuntu 16.04 之前解决过,更新后问题又来了. 出 ...
- matlab2015崩溃,Matlab 2015b 启动时崩溃 MATLAB crashes during startup on Ubuntu 16.04
Matlab 启动时崩溃 MATLAB crashes during startup on Ubuntu Matlab 2015B Ubuntu 16.04 之前解决过,更新后问题又来了. 出错信息如 ...
- 拼接符 防注入正则校验_SpringBoot 开发秘籍 启动时配置校验
概述 在项目开发过程中,某个功能需要依赖在配置文件中配置的参数.这时候就可能出现下面这种现象问题: 有时候经常出现项目启动了,等到使用某个功能组件的时候出现异常,提示参数未配置或者bean注入失败. ...
- 开发板启动时,内核打印出can't access tty,job control turned off
启动后的最后一行提示can't access tty,job control turned off, 这说明没有进入到控制台,原因就在于文件系统的/etc/inittab 这个文件里有问题 vi /e ...
- 【SpringBoot】 启动时,修改默认配置文件名称
前言 spring boot version : 2.0.0.RELEASE maven version : 3.5.0 在不同的环境下,依赖的外部资源是不一样的.比如,在windows上开发,在li ...
- jvm崩溃的原因_JVM崩溃时:如何调查最严重错误的根本原因
jvm崩溃的原因 当应用程序崩溃时,您可以学到什么? 我认为,"后见之明是20 /"是最喜欢的短语之一托马斯·罗梅尔 ,工程ZeroTurnaround的副总裁. 好吧,我实际上不 ...
- iPad开发(相对于iPhone开发时专有的API)
iPad开发 一.iPad开发简介 1.什么是iPad 一款苹果公司于2010年发布的平板电脑 定价介于苹果的智能手机iPhone和笔记本电脑产品之间 跟iPhone一样,搭载的是iOS操作系统 2. ...
- docker jvm调优 tomcat_docker+tomcat 启动时非常慢原因之JRE /dev/random阻塞
docker+tomcat 启动时非常慢,一般正常启动几十秒的,发现docker+tomcat启动竟需要几分钟,不可思议 根本原因是 SecureRandom 这个 jre 的工具类的问题.那为什么 ...
最新文章
- IPMSG飞鸽传书——编译源代码的方法
- 在Java中如何高效的判断数组中是否包含某个元素
- Asp.net 中使用单独类文件
- hoj 2739 中国邮局问题
- linux符号命令,Linux_几个符号命令(示例代码)
- Linux内核中的同步原语:自旋锁,信号量,互斥锁,读写信号量,顺序锁
- 啤酒与尿布,咩叔原创基于图论简单到爆的实时关联性算法
- Linux I2C总线驱动调试之i2c-tools工具使用
- 局域网测试工具、局域网UDP、TCP端口诊断工具
- FPGA综合项目——SDRAM控制器
- Excel技巧:如何将数值改成以万为单位,且保留小数点两位?
- Kettle之定时运行Job
- sap--TCODE 之 SE93 将事务代码分配给程序(转)
- APP下载链接在微信内打不开显示已停止访问该网页怎么办?
- 掌门教育:品质为本,全面打造高质量教学核心驱动力
- HttpClient 实现酷狗 Top500 音乐下载
- Jquery----下拉菜单(利用滑动效果)
- 数字IC设计——跨时钟域篇1(时钟域)
- python输出语句print i、j、k_Python的打印使用,python,之,print,用法
- 用Python算累加求和问题