iOS/Android系统多任务浅析

多任务,伪多任务。iOS与Aandroid操作系统的争论一直不休。双方的支持者都不甘示弱,都在谈,可谁又都谈不明白。

说到多任务,我们就不得不谈Pushmail。这是一个很经典的(伪)多任务,黑莓靠这个一度称霸北美市场。开启Pushmail的黑莓手机不是靠后台的实时进程,而是通过消息提醒,类似现在的信息推送。这样的做法可以极大的减少电量的消耗,而那些真正实时查看的后台进程,无一例外的都是电量消耗大户。

移动设备对于后台进程有着自己的管理方式,如果无限制的让进程在后台任意堆栈,那电量很快就会被耗尽。

由于系统资源和电池容量的限制,移动系统的多任务与PC系统有一定的差异。桌面系统的多任务确实有多个程序在同时运行,当从一个切换到另一个时,它们都是一直正常运行的,一般不会被结束。而移动系统则是在不同应用中快速切换。当切换其他应用时,原程序被挂起,暂停执行。

现在的移动操作系统在多任务上均有自己独到的特点,人们无不希望能同时运行多个程序,从而提高使用效率,简单有效的多任务管理模式能够提升用户体验,iOS和Android在多任务管理上有什么区别?我们下面就针对这个谈一下。

iOS是伪多任务?

Android系统原生就支持多任务,而iOS系统是从4开始的。它的多任务并不是传统意义上的多任务,不是任何应用进程都可以在后台自由运行。真正做到支持多任务的只有苹果Safari和Mail,很多苹果亲生的应用也都并不支持。

对于第三方应用,可以开放的后台运行接口只有音频播放(如QQ音乐)、地理位置检测(如谷歌地图)和网络电话(如Skype)等。

在iOS中,单击Home键可以从应用中退回桌面。之前运行的应用并不是被关闭了,而是被暂时“冻结”。已经分配给它的资源仍然没有收回,它是在运行中的。当你重新点击应用,就会立刻进入,并恢复退出之前的状态。这就是苹果的快速切换应用功能(fast app switching)

苹果官网多任务解释

双击Home键可以激活屏幕下方的夹层,后台运行的应用都在这里。但并不是所有在这里出现的应用都是后台运行的。

iOS的多任务可以分为三种:

1、保持退出时状态

这种多任务只是一种看起来像多任务的单任务,当按下Home键时,程序会保持状态。待到下次呼出时便恢复保存时的状态,让人看起来好像没有退出过。就好像玩PSP上游戏的临时存档一样,退出游戏之前存一下,再次进入并读档后,这个临时存档就消失了。

2、有限多任务

在这种多任务下,按下Home键,程序会保存到内存中,可以执行一些系统允许的进程,如音乐播放和下载等。这种多任务更快,但会占用内存。

3、传统意义多任务

Safari和Mail就是这种多任务。这种多任务可以让程序在切换到后台时,无限制的做出动作。对于移动设备来说,如果不限制这样的行为,任由程序在后台随意执行,电量很快就会被用光。

有几种情况下,应用是真正完全退出了:1、系统为节省内存而自动终止某程序;2、用户手动长按屏幕下方多任务栏中的应用并关闭;3、尚没为iOS系统重新编译过的第三方应用(如更新之前的ONE|一个),这种应用无法被冻结,所以退出即终止。

能够在后台运行的应用有限

之所以iOS系统会给人伪多任务的印象,是因为苹果处于延迟续航时间等考虑,强制仅有少数几种应用能够被授权在后台运行。大多数应用在退出后会被挂起,挂起后的10秒钟内,仍然占用着原来的资源,用以一些善后工作。

当后台的应用过多,运行内存不够时,系统会自动结束认为最没用的进程,或是运行最早的那个进程。而那些被允许在后台允许的应用,系统会通过专门的API给予其永久后台权限,直到状态结束或用户主动关闭。

从多任务的定义上来看,iOS系统可以进行多任务处理,但又不完全符合传统意义的多任务。它需要挂起前一个进程才能将操作分配给下一个进程。但不管怎样,它是支持多任务操作的。

真正的后台是要付出代价的

再来说说Android。Android系统的运行方式是这样的:当你运行了一个应用,就进入了该应用相应的层面;当你又运行了一个应用时,就又进入了这个应用的层面。新的层覆盖在旧的上面,相互叠加,周而复始。谷歌为开发者提供了7个API,来调整应用层之间的切换和运行,它的用途主要是用来设置如何切换,以及切换后要做怎样的操作。

当新的层活动时,会叠加到下面的层上,下面的层就会冻结,或者说是被挂起。新的层处于激活状态。这时按返回键的话,所有不可见的层就全部被冻结。


在Android系统后台冻结中的应用

在后台运行上,谷歌提供了两种解决方案:

服务类(Service):

可为应用提供一个内容由程序自身决定的服务,应用可以将需要在后台执行的操作写入服务中。当这个应用被切回后台,它的所以活动都被冻结。但写入服务的那些操作仍然可由系统继续执行。如QQ这样,只运行该应用的某个活动。

广播接收类(Broadcast receiver):

它可以让应用在后台完整运行,而不像服务类,只能运行某一部分活动。但前提是应用必须给系统一个既定的运行时间和目标,当应用消耗完时间,或达成了目标后,系统就会结束并冻结该应用的所有活动。这个类普遍存在于闹钟和GPS类的应用当中。

当然,这两种类并不是随便给予的,还是要有一定限制条件,在某种用途中可以指定分配服务类或广播类。广播类还会根据需求限制最大时间,从而防止被应用随意使用,造成系统拖慢。

理论上Android系统没有运行程序的数量限制,只要内存足够,可以无限制的开启任意多个应用。最后,当后台中运行的应用越来越多,运行内存吃紧,系统便会强制结束冻结中的活动。优先结束没有服务类和广播类的活动,其次是服务类,如果内存还是不够,最后就会结束广播类的活动。

总结:

从上面两个系统的多任务的描述来看,iOS和Android都是支持多任务的,而且机制几乎相同——大体上都是,前台运行后台挂,特殊情况有权限。

比较起来,Android系统给予应用的特殊权限比iOS要多些(这也是为什么iOS用起来比较顺滑的原因)。这还得说iOS有比较先进的推送系统,而Android就比较惭愧了。

所以为了让更多活动及时的从后台推送到前台,Android就必须让更多的应用在后台运行,也就需要占用更多的内存和处理能力,自然需要付出更高的电力和更好的硬件作为代价。

文章来源:泡泡网

时间: 2024-08-17 18:16:18

iOS/Android系统多任务浅析的相关文章

[iOS/Android]手机搜索不到wlan无线信号怎么办

通过路由器上网,如果使用环境中,出现iOS/Android系统无线终端搜索不到路由器的信号,可按以下方法排查: [iOS] 搜索不到无线信号怎么办 在无线终端无法搜索到信号时,请确认无线终端的无线开关 已开启.如下图所示: [Android] 搜索不到无线信号怎么办 在无线终端无法搜索到信号时,请确认无线终端的无线开关已 打开.如下图所示: 检查路由器设置 检查路由器是否设置了中文的SSID或SSID中包含特殊字符,建议修改SSID为字母.数字的任意组合.无线信道推荐在1-11的范围内.同时确保

学习笔记TF066:TensorFlow移动端应用,iOS、Android系统实践

TensorFlow对Android.iOS.树莓派都提供移动端支持. 移动端应用原理.移动端.嵌入式设备应用深度学习方式,一模型运行在云端服务器,向服务器发送请求,接收服务器响应:二在本地运行模型,PC训练模型,放到移动端预测.向服务端请求数据可行性差,移动端资源稀缺.本地运行实时性更好.加速计算,内存空间和速度优化.精简模型,节省内存空间,加快计算速度.加快框架执行速度,优化模型复杂度和每步计算速度. 精简模型,用更低权得精度,量化(quantization).权重剪枝(weight pru

那些号称挑战Android和iOS的系统如今在哪里?

中介交易 SEO诊断 淘宝客 云主机 技术大厅 对于渴望听到一个新故事的人来讲,今年的智能手机市场依旧没有什么惊天动地的改变,Android和iOS双雄垄断局面甚至愈演愈烈,如果非要说有些什么蛛丝马迹的话,那么三星业绩的下滑可能是个大变前的征兆,但是Android的市场份额一次又一次的创历史新高. 根据分析机构IDC的调查数据显示,目前在移动市场,Android系统依然排名首位,市场占有率为84.7%,排名第二的iOS占11.7%,微软的WP排名第三,为2.5%,剩余的部分叫做"其他"

Android源码浅析(五)——关于定制系统,如何给你的Android应用系统签名

Android源码浅析(五)--关于定制系统,如何给你的Android应用系统签名 今天来点简单的我相信很多定制系统的同学都会有一些特定功能的需求,比如 修改系统时间 静默安装 执行某shell命令 这些对于正常的应用来说,是需要很多技巧性的东西来做的,因为他们没有权限,而我们做定制系统的 话,可以给我们的应用来系统签名,这样就拥有系统的权限了,那我们应该怎么做呢? 我们以执行某shell命令为课题来解释: 首先,我们要知道,一般的命令都是在system/bin下,我们可以看图 使用shell命

宿敌的战争 - iOS 8 依然不如 Android 系统的十个方面

class="post_content" itemprop="articleBody"> 也许你的身边还有朋友正在排队购买 iPhone 6 和 iPhone 6 Plus,但是与其在外面刮风下雨排队,不如在家中舒适的使用 Android 系统智能手机也非常不错.与 iOS 相比,Android 系统最大的优势来自于高度可定制性,无论是界面调整.改变某个应用程序图标甚至是方便又强大的桌面小部件,都是 Android 系统最大的优势,这些可是 iOS 用户所无法

浅析Android系统的架构以及程序项目的目录结构

Android框架结构 直接上图: 由上图,我们可以看出Android系统架构由5部分组成, 分别是:Linux Kernel(linux内核).Android Runtime(运行时环境).Libraries(类库).Application Framework(应用框架).Applications(应用). 1.1.Linux Kernel Android基于Linux 2.6提供核心系统服务,例如:安全.内存管理.进程管理.网络堆栈.驱动模型.Linux Kernel也作为硬件和软件之间的抽

iOS/android/wp三大移动平台的交互设计差异

  iOS,Android,WindowsPhone是现在移动互联网上面主流的三个平台了,我也都分别参与过这三个平台的设计.在设计的过程中,因为这三个平台的不同特性,往往要角色切换,不断的换位思维. 可能新手和外行人觉得iOS和Android没什么区别,有的甚至拿Android直接照抄iOS设计就可以了.还有一些人可能对WindowsPhone平台一直觉得魔幻无比,但就是找不到应该如何下手.今天我总结了一下这三个平台之间交互设计上的差异性,在开展交互设计的过程中,必须要注意的问题: 一.布局形式

android系统文件下载二次请求

问题描述 android系统文件下载二次请求 应客户要求在通过手机访问系统主页时提供一个文件下载的功能.通过IOS产品.windows下所有浏览器下载都没有问题,但是通过android系统的手机访问下载时会出现两次请求的情况,有的品牌的android手机完全就无法下载,敢问哪位大虾遇到类似的问题,求解决之道. 解决方案 同样的问题,二次请求就不说了,问题是第一次铁定报错.而且还会有几率下载不成功,恼火啊 .....

Android系统专题

android FragmentTabhost实现选项卡 Android实现异常记录并重启程序 android联系人信息的存储结构 android js互调例子 android实现垂直seekbar Android实现左滑退出Activity(完美封装) android ant最简单的打包签名及混淆方法 Android动画复习:包括缩放动画.平移动画.旋转动画和透明度动 Android自定义View之使用贝塞尔曲线实现流量进度条 Android Zip压缩工具类 Android中Applicat