BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / digi-life / #205371同步于 2013/1/2
DigiLife机器人发帖

谈谈iOS和Android

dss886
2013/1/2镜像同步0 回复
算了算,G7用了快一年了,iPad3也已经入手了4个多月,一直对着两个系统的特性很有兴趣。最近在论坛上看到了一篇帖子讨论iOS和Android的前景,触动颇大,这两天也仔细研究了一下,谈谈我对这两个系统的理解。 (标出的红字是文章纲要,不想看全文的扫一眼就行。) 1.iOS作为先驱者树立了移动设备交互的标准,而Android大量抄袭毋庸置疑。 为了防止被误认为无脑苹果黑,这一条必须放前面..... 地球人都知道,在界面上Android抄袭苹果是抄得一塌糊涂,从锁屏界面到主界面到交互方式无疑不是在向iOS看齐。这个就不多说了,看图最清楚。 2.青出于蓝?从iOS借鉴Android的通知中心说起。 Android出来以后,大家发现Android有个很好用的功能,就是他的状态栏可以下拉,成为一个通知中心,里面不仅可以接受应用的消息,还可以放很多快捷按钮。这下乔布斯坐不住了,不久后就发布了iOS5,借鉴Android做了一个通知中心。注意,为什么我说是借鉴而不是抄袭,因为iOS和Android的通知中心看上去很相似,但实际上却是完全不同的东西。 Android的通知中心是本地的,每个应用都可以设计自己的多线程,当满足了某个条件时(比如人人客户端上有人@你,或者QQ音乐播开始播放下一首歌了),就向通知中心发送一条消息,这个时候状态栏就会显示应用的消息内容,下拉状态栏调出通知中心就可以查看并处理消息。 而iOS的通知中心却是在服务器端的,一个应用想要发送通知,必须由应用的服务器发送请求给苹果的服务器(注意并不是你的iPhone上的应用发送的),说我想要推送一条xxx标题xxx内容的消息。苹果收到后就会给目标设备发指令,于是你的iPhone或者iPad通知中心就会弹出消息了。 所以iOS不联网就收不到通知,因此也无法做到像Android上的应用一样可以在通知中心提供一些本地信息(比如音乐播放器提示正在播放的歌名),你可能要问苹果为什么要这么设计,这就不得不谈到它的多任务处理功能。 3.从多任务的功能看iOS的局限性。 07年第一代iPhone发布的时候,手机领域还是塞班的天下,乔布斯或许是没想到,或许是出于续航能力的考虑,并没有设计多任务功能,切换应用后上一个应用就完全停止了。后来由于Android的步步紧逼才加入了多任务处理。到现在iOS的多任务还残缺不堪,一个app在按下home键的30秒到1分钟内就进入休眠,所有的线程暂停、驻留内存等待重用或者销毁。 乔布斯的完美至上的理念创造出来了iPhone这个艺术品,但是天下没有免费的午餐,追求完美就意味着不得不舍弃很多东西。iOS到目前为止(iOS6)没有开放真正的多线程,第三方应用可以使用的“多线程”仅仅只有电话、播放音乐和GPS等少数功能。因为多线程意味着应用可以联网和处理数据,意味着耗电量增加,而为了保持同样的续航时间就得加大电池的容量,这意味着iPhone将变得又重又笨,很显然乔布斯在多线程和又轻又薄的iPhone之间选择了后者。 而Android从设计之初就加入了多线程的概念,一个应用可以启动多个服务(service),当应用被切换至后台时,控制界面的线程(Activity)被暂停,而服务依然在运行,可以收发数据、播放音乐、发送通知等等。同样的,多线程带来的是CPU和内存的开销大增,这是造成Android设备的硬件性能相似甚至超过同时期iPhone的情况下,续航能力和界面流畅度却远远不如的一个重要原因。 我的iPad在用同步推或者pp助手下载应用的时候就没有一次下完过,只要一切换出去,过不了一会就下载就暂停了。优酷的客户端倒是能下完(虽然我不清楚它是怎么实现的),但是下载完成的视频里有断点,播放时会卡住。 Android在这方面就好多了,我可以一边用UC下载应用,一边用QQ音乐下歌,同时用iReader看书,除了手机没电或者网络出现问题之外,世界末日都不可能阻止我下完它们 ~。 4.成也开源,败也开源,Android的版本分裂和碎片化。 上面说到多线程是Android手机流畅度不如同代iPhone的重要原因,另一个重要原因就是Android版本更新过快,大大超过了用户更换手机的频率,导致当最新的4.2发布后后,绝大部分用户仍然在使用2年前发布的2.3.3系统。 另一方面,由于Android系统的开源特性,每个手机厂商都会针对自己的品牌进行二次开发,比如HTC的Sense,小米的MIUI,魅族的Flyme OS等等。每个系统又会适配不同的机型不同的配置:单核双核四核CPU,3.5 3.7 4.1 4.3 4.5英寸屏幕..... 这个时候就会出现一个两难的局面,手机厂商也为难,最新的系统肯定要开发,用的人最多的2.3也不能丢掉,这样就分散了大量的人力,对每一个具体机型的代码优化投入的精力就少了很多。对开发者来说也为难,数十个Android版本、每个Android版本又有十几个定制系统、再加上不同大小的屏幕分辨率,组合起来数以万计的机型。你要保证你的应用在每一款机型上的表现形式都一样,这是一件很不容易的事情。 反观iOS,iPhone、iPad一共就那么几款,加上iPod touch 都只要一双手就能数得过来,苹果要针对他们进行代码优化,或者开发者想要适配不同的机型就容易多了。 这也就是为什么Android的市场占有率已经超过iOS一半(Android 52.2%,iOS 33.4%,2012.10),而App Store依然火爆、Google Play 却死气沉沉的原因。很多著名应用都是在iOS上火了以后,才开发的Android版。 5.从开发者的角度对比苹果和Google的设计思想。 其实之前我也一直觉得Android就是iOS的一个山寨品,我相信很多没有用过Android的忠实苹果粉现在仍然是这么想的,但是通过使用两个系统的亲身体验,我却发现了在相似的外表下的是苹果和Google完全不同的内核和设计思想。 之前已经说过,Android多线程的基础:服务。其实服务只是Android的冰山一角,之前我在学习Android开发的时候,就曾被ContentProvide的设计思想惊艳过。Android里系统级的东西其实只有一个虚拟机(VM),所有的应用,无论是系统应用还是第三方应用,都处于同一个优先级。你可以用第三方应用替换系统应用(比如Go短信替换系统短信,Go桌面、小米桌面替换系统桌面等)而不会出现问题,甚至系统设置这个应用(没错,它就是一个应用)也可以被替换。既然系统应用没有高优先级,那么如何保证手机的正常功能(不会出现电话、短信没有应用来处理的情况)?Google对此提出了ContentProvide的思想。 Android里每个应用的数据都是相对独立的,比如UC浏览器就不能随意读取你的短信内容和联系人资料。而不同的应用又是互相联系的,如果有必要,应用会向系统注入ContentProvide(就像开放了API)来向其他应用共享自己的数据。第三方应用如果有需要,可以请求这些权限,在使用时直接调用数据(如下图,飞信安装时会提示需要的各种权限),或者向其他程序发送数据(如下图,可以将截屏的图片通过不同的程序发送)。这样系统只需要管理这些权限,就能保证整个系统的正常运作,同时大大提高了各个程序之间切换的效率。 再看iOS,苹果将自己的应用和第三方应用区分的非常严格,第三方应用能用的系统级API屈指可数,开发游戏或者社交软件没有问题,但是你想要做一个实用的系统工具,不越狱?对不起,您哪凉快哪呆着去吧。想装个输入法?没门!想改个锁屏画面?没门!想做个后台下载?还是没门! 6.Android未来必须解决的问题。 说了这么多,好像大部分在褒扬Android贬低iOS,其实不然,Android作为一个新生儿,还有很长的路要走。下面几个问题不解决,取代iOS的地位仍然无望。 1) Android版本和设备的碎片化。其实Google已经开始处理这个问题了,将手机2.x和平板3.x合并为4.x就是一种努力,可是仍然不够,要解决不同分辨率之间的显示差异化,还要花很多功夫。 2) 设备的运行效率。不得不说,同样的硬件条件下,Android手机和iPhone的运行效率差的不是一点两点。固然有多线程的原因,但是Android的代码优化做的不够也是不争的事实。 3) Google Play。本着开源的原则,Android上的程序并没有强制性要求在Google Play上架,这就给了一些流氓软件和垃圾软件空间,同样也不利于Android平台上的付费应用的商业化。如果你知道App Store拒绝应用上架的理由有一条叫做“看上去很丑”,就会明白为什么iOS的应用都那么精致了。 7.简约还是简陋?在艺术品的iPhone和实用品的Android之间你选哪个? 每个人都有虚荣心,我也不例外,我也想拿着最新的iPhone装装高富帅什么的。 可是我这个人有点强迫症,当你用惯了Android,再来用没有后台下载、没有桌面widget、分享个照片到人人微博还要一个一个应用打开、发送、关闭的iPhone时,会很不爽。 如果有经济实力,我可能会买新一代的iPad、iPad mini、或者可能的big iPhone来玩游戏。但是如果要换手机,对不起,我还是选择Android。那么你呢? ——以上为个人意见,不喜勿喷。文中部分内容未查阅详细资料,可能有所疏漏。
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。