iphone按home键后,正在运行的程序是否退出了呢?

  是否一直有个疑问,当iphone手机正在运行一个APP,如果按Home键后,那么原来正在运行的程序还在运行吗?如果开发过ios程序,可能不是问题,如果没有开发过的,可能会疑惑了,我就简单的说一下。以几个问题的形式来说明,以正在运行QQ为例。

1.为什么按home键后,长时间不操作,再启动qq的话,会重新运行qq(没有回到原来的状态)?

答:iphone实际上是伪后台,按home键后,程序就退出了。所以我们iphone中使用的程序一般都没有退出键。

试想一下,如果程序有退出键的话,那么当程序无响应的话,退出键也就不能用了,退出的话,不也还需要按Home键,因此索性就不加退出键好了,“简洁统一”体验很好啊。

再想一下,如果按home键而程序没有退出运行的话,那么我们的手机会越来越慢了,用户会抓狂的。

因此我们双按Home键显示的“后台运行程序列表”,准确的说,应该叫做“最近使用程序列表”

2.既然按Home键后,qq程序退出了,那么为什么我短时间内再运行qq,并不会重新启动qq,而是回到退出前的状态?

答:前面说如果程序不退出而在后台运行,系统会非常卡,用户会抓狂;那么如果程序每次都需要重新启动,花费一些时间,用户也会抓狂,因此iphone采用了一个方法:当按Home键后,程序会终止运行,不会占用cpu,但是会在内存中保存记录点,记录上次程序运行的点,因此重新启动qq的话会回到退出前的状态;但是qq并没有实际运行,所需  要的内存很少,同时苹果在资源优化上也做了很多工作,因此不会对手机内存的占用量有太多影响;随着后台中保存的运行程序的记录点越来越多,或者其他程序运行时感觉内存不足的话,那么系统会自动清理掉后台程序记录点,导致问题1的出现,即再启动qq的话,会重新运行qq。

3.既然qq退出运行了,为什么我还会收到推送信息,例如qq离线消息?

答:确切的说,给我们发推送信息,例如qq离线消息的,并不是qq程序,而是ios系统,我们收到的推送信息和应用程序是否关闭没有关系;大概可以这么理解:如果我们在qq中或者手机设置中开启了推送消息,那么苹果就会在自己的服务器上记下你的手机ID,当qq需要发送推送信息时,会把信息发送给苹果公司的服务器,然后苹果公司的服务器再把信  息发送给你的手机上。

当然了,iphone手机应用程序还有另外一种通知方式,叫做“本地通知”,不需要苹果服务器给你发信息了,例如下载了个俯卧撑软件,定时提醒你,那么手机会根据本地设置,定时给你发推送信息。

总结一下:按home键后,为了手机不“卡死”,所以会让程序在后台挂起,不占用cpu;但是为了用户下次启动时会有较快的响应,因此会在内存中保存运行点,提高体验;不管程序运行不运行,都可以发送推送通知。

PS:心里明白了,但是还是有点儿不信或者还想深入理解怎么办?答:买个苹果电脑,编个app测试一下,就ok了。

iphone按home键后,正在运行的程序是否退出了呢?,布布扣,bubuko.com

时间: 2024-11-03 22:19:45

iphone按home键后,正在运行的程序是否退出了呢?的相关文章

登录远程服务器运行的程序,退出服务器仍然运行的方法

问题 远程登录服务器运行程序,退出服务器之后程序就中断. 解决方法 利用Screen软件 在服务器上安装screen screen -S test #创建test虚拟环境 Ctrl + A 保存 D 退出虚拟环境 参考linux下SSH远程连接断开后让程序继续执行 原文地址:https://www.cnblogs.com/pualus/p/8623975.html

Window7中Eclipse运行MapReduce程序报错的问题

按照文档:http://www.micmiu.com/bigdata/hadoop/hadoop2x-eclipse-mapreduce-demo/安装配置好Eclipse后,运行WordCount程序报错: log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory). log4j:WARN Please initialize the log4j

汇编题目:在DOS下,按F1键后改变当前屏幕的显示颜色

我们都知道int9中断是键盘的按键中断程序,按下键盘触发int9中断,不懂int9中断的请自己去百度查查说明和用法 利用中断任务安装一个新的int 9中断例程,功能:在DOS下,按F1键后改变当前屏幕的显示颜色,其他的键照常处理. ;任务:安装一个新的int 9中断例程, ;功能:在DOS下,按F1键后改变当前屏幕的显示颜色,其他的键照常处理. assume cs:code stack segment db 30h dup(0) stack ends data segment db 20h du

在屏幕中间显示,按ESC键后改变字符的颜色

程序功能:编写程序在屏幕中间显示“a”~“z”,并可以让人看清,这个任务比较好实现. (1)在b800:[ 160*12+40*2]处存入a的ASCII码.(2)在循环中使用一个100000000000H次的循环空转达到延迟效果.(3)按键盘引发int9中断改变颜色 那么如何实现,按下Esc 键后,改变显示的颜色呢? 键盘输入到达60h 端口后,就会引发9号中断,CPU 则转去执行int 9中断例程. 我们可以编写int 9中断例程,功能如下: ?(1)从60h 端口读出键盘的输入: ?(2)调

iOS程序进入后台后仍运行定时器NSTimer

由于本应用需要在应用进入后台后还要进行定时的检测功能,因此对于我来说怎样让APP在进入后台后 保持运行状态是比较大的需求.然后在iOS系统中是很难实现的,不管是 通过 音频还是 定位系统,我查找了一些资料后都是只能申请到十分钟的运行态.没有所谓的长期运行的概念..... 然而在博客中突然看到这篇文章,尝试了下竟然可以运行很久.不管怎么样我还是先试试了......至于苹果是否能审核通过估计又是个难是 具体如下: 本文所讲为其中之一:iOS程序进入后台后十分钟之内就会被系统kill掉,怎么解决呢?我

设置Qt程序在Windows开机后自动运行

(转自:http://blog.csdn.net/weiren2006/article/details/7443362) 让软件在系统启动时自动运行,可通过修改注册表实现. 在\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加需启动的程序路径,代码如下: voidautoStart(boolflag){//写入注册表,开机自启动HKEYhKey;//找到系统的启动项LPCTSTRlpRun=(wchar_t*)

Advanced Installer 打包后,安装包在WIN10下重启后再次运行安装的解决办法

原文:Advanced Installer 打包后,安装包在WIN10下重启后再次运行安装的解决办法 前几个月使用Advanced Installer 打包了一堆安装包,其中有使用默认主题的,也有根据UI设计更改过一些功能的,当时在Windows7下测试没有任何问题,就直接上线给用户使用了. 这两天在禅道上发现指派了一个BUG过来,描述的内容是在Windows10下安装包会出现重启后再次自动运行的问题,见鬼了,没有写过自启动注册表啊,马上打开工程查看,发现了一个很奇怪的现象,下面来介绍. 1.当

按Enter键后Form表单自动提交的问题

怪事年年有,今年特别多. 话说,最近项目中遇到一件怪事,当我鼠标focus在文本框中,轻轻敲了下回车键,尼玛页面突然刷新了,当时把宝宝给吓得. 接下来就是一番苦逼的烧脑和蛋疼~ 一.被表象所迷惑 突然出现这种情况,脑海中第一反应是,keydown事件是不是出问题了,然后找啊找啊找啊,然后没有然后. 在把input元素上的所有事件移除掉后,我自信的按了一下enter键.艾玛,又刷新了.心里那个苦哎. 二.列出所有可能 一阵捣鼓之后,脑海中列出了所有按下enter键后的改变,url改变,多了一个问号

iis6手工创建网站后无法运行php脚本

给人搬了十几个网站,老站用西部数码建站助手创建的,现在过期了无法继续创建,只能在Internet 信息服务(IIS)管理器创建网站,创建下来都没问题,但是就是无法打开网站. 测试打开txt文档.静态页面都能打开,一到打开php文件就直接就挂了,无法打开,什么报错都没有. 之前有用iis6以外的服务器创建过网站,都是直接创建就可以运行. 没报错不好找问题,百度用别人的方法操作也不行.实在没办法,只能对着之前用建站助手创建的网站配置,放下架子,一个个看过去,结果发现用建站助手创建的网站ISAPI拓展