zoukankan      html  css  js  c++  java
  • 关于iOS多任务的一些扫盲

    打从这世界出现了操作系统以来,就没有过所谓真正的“多任务”。所谓多任务,无非是CPU速度够快而足以支撑极短时间内在多个进程内动作罢了。而所谓的“单任务”,无非是只能让当前任务独享资源罢了。

    简单来说,iOS 4 app类型可以分为三种:
    1. 保存现场。按下Home键10秒内直接杀死进程,并释放内存。
    2. iOS支持的“多任务”。按下Home键转入多任务状态,保留在内存中,但只能系统允许的动作:比如GPS,比如VoIP,比如Streaming Music等等。
    3. 真正的桌面级别的多任务。只有Safari/Mail是,苹果嫡系大都都不是。这个级别的app在后台没有任何限制动作。

    无限制动作的程序,一会在用户无察觉的情况下耗光电力,二会有安全上面的问题(君还记得那些个在后台依旧默默发送你的个人消息程序吗?)
    顺便提一句,后两种占用内存的app,也会在任意时间从内存中被砍掉,取决于你是否动用了其它app而导致内存不足。
    真正不会被砍掉的后台,只有苹果那个通知系统。

    其实可以回顾一下iOS是怎么一步步引入现在这个机制的。
    刚出生,什么都没有,单纯的单任务。
    iPhone OS 3.0,引入通知架构,当年全部机型可用;Android晚了一年,2.2才有此功能,到这个时候相信才有90%上下机器用上。
    iOS 4.0,引入有限制的后台多任务。

    搞这么复杂干嘛?直接像Android一出生那样所有app一个小虚拟机,无任何限制动作,让根本没有内存管理经验和资源消耗概念的全世界最大民工群Java程序员们写的app任意地跑着吧!
    答案只有两个:电力,安全。安全不说,如何在保持多任务优势的同时,避免消耗过多电力,苹果花了很多心思;而不是像webOS/Android一样,简单粗暴桌面级的多任务。iPhone 4甚至在硬件上面也下了苦功,利用3D层叠技术组装A4芯片,内部元件高度集成,并把天线移至体表,增加内部电池空间。结果就是iPhone 4 1420 vs. i9000 1500。

    其实至iPhone OS 3,已经足够应付大部分应用了。用户根本无从知道app的实际运行状态,保存现场让app看起来不像是刚打开一样,通知系统又可以在后台默默推送消息。事实上,当前95% iOS app依旧只有保存现场 + 通知系统这样的组合,比如很多twitter客户端,大部分人根本不会注意到它不是真正意义上的“多任务”。很震撼的事实,但确实95%的应用场景根本不需要所谓真正的“多任务”。

    但是时代在变。真正需要多任务的东西出现了:电台要stream,IM要stream,GPS要stream,多任务必须提上日程。iOS 4加进了,WP7刚刚加进了,Android/webOS打一出生就有。从本质来说,iOS/WP7/Android/webOS跑在内存中的后台程序,唯一的区别就是,iOS/WP7限制了它可以做的事(这就是为什么它们一出生都没有多任务的原因,这个架构很复杂,不是几百行中文字可以说明白的),而Android/webOS没有;从技术上面来说,iOS/WP7/webOS三者架构相当,Android独立门户。

    于是很可笑,有无限制,成了真“多任务”和伪“多任务”的区别;而后者架构更复杂,可以套用一句“吃力不讨好”。
    为什么要做吃力不讨好的事?答案依旧在上面,电力和安全。当然你可以说iPhone电力也没好到哪里去,安全也就一般般嘛。暂且抛掉这两样不谈,实际看看iOS有限制后台app,和Android完全无限制后台app有什么不同:

    相信我,最终你会发现iOS上最令人诟病的app,是那些不支持标准协议的软件平台商们,比如腾讯。因为iOS后台允许的动作,已经覆盖了全部大大小小的通信开源协议。

    随便提提腾讯的QQ协议:
    大家都用过很多msn/gtalk客户端,但是可能很多人都没有用过非腾讯QQ客户端(曾经有过,但是腾讯把他送进了监狱)。腾讯在QQ协议上面所做的事,一是不开放,二是隔两三个月就换一次协议,三是封杀全部三方客户端。

    那么最终多任务的对比无非是,拥抱标准 vs. 允许私有。苹果作为一个弱势厂商,一直以来受够了私有标准的苦。比如一直到现在都没法用非IE支付的中国网银们,正是微软自己私有标准的后果,也是苹果为什么要开做开源WebKit的原因。软件可以封闭,硬件可以封闭,但是要拥抱标准,这是苹果的理念。

    结论很简单:如果你要用一些私有协议的app(在中国我想大部分人都要用QQ的),请别看别买别关注iPhone;如果你用的都是一些拥抱标准的app,那么推荐你使用iPhone,因为它更省电更安全。关于说iOS多任务有什么用:除了不能支持私有协议外,和Android一样。

  • 相关阅读:
    全文本搜索神器
    唯一索引和普通索引怎么选择
    程序员应不应该搞全栈
    c 的陷阱
    抽象能力
    电影电视剧推荐
    系统故障诊断
    一次web网站被入侵的处理记录
    Spark RDD 操作
    (转)Mysql哪些字段适合建立索引
  • 原文地址:https://www.cnblogs.com/jiafei/p/2594003.html
Copyright © 2011-2022 走看看