Android 为何比 iOS 卡?【转载】
Android 卡是必须的,当你的手机装了 20 多个 app,那不卡才叫见鬼了呢,我手机微信都打不开,手机直接自动重启啦~哪种东西生来就是完美的呢?即便是台式机,也是越用越慢。换句话,如果没有特别原因,谁的手机能装那么多 app,并且都在用呢,你经常用的有几个?~iOS 生来就是为移动而生,Google 能把 Linux 改造成手机操作系统也不易(说明 Linux 这东西真是强大啊!);iOS 是封闭的,Android 是开放的(苹果和 Google 是两个理念完全不同的公司)。在说 Android 卡的同时,不能忽视商业竞争和硬件发展,当年 Java 出现时,也有人诟病它的慢……对技术还是要有颗包容的心,尤其是对 Android,如果你够牛,从 google 下载源代码,就可以有自己的手机了,除此之外,还有别的方式吗,这难道不好吗~这种情况,又何止 Android,在 IT 界太常见了,网络 7 层、Web、浏览器、HTML 5 等等,实际使用已经很多年了,可标准化却跟不上,要想把握很难,开源的尤其如此~
昨天,一位认证信息为小米员工的网友在微博上发言,“iPhone 6 用户都不在意1G内存不够,红米 2 的 1G内存够用了,保持流畅的秘诀就是少装App”,后来的事情大家知道了。
要保持安卓手机流畅,少装 App 确实有用,不过 iPhone 6 是否流畅和少装 App 却没有半个钱关系。
iOS 8让人们第一次发现原来苹果也会卡顿,而与之相比,Android 卡却早已名声在外。
Google 在推出 4.4 时发明了ART(Android runtime)来解决卡慢, 5.0 时又用 ART 彻底取代 Dalvik,号称实现高效、省电、流畅的 Android 系统目标已经实现。
安卓机真的能不再卡顿了吗?一切还得从根源说起!
四大先天因素埋下卡顿根源
第一、基因使然。iOS 只需要保证在苹果仅限的几款移动设备上的运行体验,而 Android 则需要保证能兼容尽量多的已存在和未存在的不同硬件组合。
iOS老祖,UNIX 之父 Ken Thompson
Android 老祖,Linux 之父 Linus Torvalds
iOS 基于 Apple 的 OSX,而 OSX 基于 FreeBSD ,FreeBSD 又是在 UNIX 上衍生的,其根源可以追溯到 1969 年。Android 基于 Linux,起源于 1991 年 Linus Torvalds 的一个简单需求。
其实从起源之处就能看出未来命运的注定不同:
UNIX 是与硬件配套的商业软件,而 Linux 则是可运行在多种硬件上免费自由的开源系统。
一个为指定硬件定制优化的系统与一个要在上万种奇葩配置上跑起来的系统相比,结果会如何?
第二、 响应机制。iOS 最先响应屏幕反应,而 Android 响应屏幕排在应用与框架之后。
iOS 响应顺序依次为 Touch——Media——Service——Core 架构,当用户只要触摸屏幕之后,系统就会最优先去处理屏幕显示也就是 Touch 这个层级,然后才是媒体(Media),服务(Service)以及 Core 架构。
Android 的优先级响应级别则是 Application——Framework——Library——Kernal 架构,和显示相关的图形图像处理这一部分属于 Library,当你对屏幕操作之后,Android 系统首先会激活应用、框架,然后才是屏幕最后是核心架构。
第三、开发语言。iOS 采用执行效率极高的 Objective-C 语言,而 Android 采用的 Java 语言因为虚拟机的存在,二次转化再执行效率很低。
Android 开发是基于 Java“Write once, run anywhere”理念,正因为这个理念,引入了虚拟机,也就是说编码实际上需要“转换”才能最终以用户可看的程序跑起来。
第四、后台管理方式。iOS 中的后台程序并不是指当前后台运行程序,其实是你最近使用过的程序使用记录,比如浏览器的网页浏览记录。
Android 后台则是一直在内存中运行,程序在进程活动停止后都会保留在内存中,直到系统需要更多内存再释放这部分资源。
这个后台管理机制造成用户感知的差异化放大,Android 旗舰已进入8核CPU、3G RAM的级别,而iOS却只需要双核1G就能保持稳定流畅的头衔不动摇。
三大后天因素拉低用户体验
其实 Android 与 iOS 相比,除了四大先天不同所造成的差距外,还有三大后天因素让 Android 的体验越来越不尽如人意。
1、无序的开发者
Android 的开放与自由带来了大量的开发者,也让一部分不遵守规范的开发者进入 Android 的世界,于是应用开始肆意挥霍硬件资源,不少程序都开始自动启动。
当你安装了不少的应用之后就会发现,这些应用都开始驻留后台。杀掉这些应用的进程无助于解决问题(因为他们会自动重新启动,不断地杀进程会造成他们不断重启,最终耗光你的电池),最后你只能彻底删除他们。
因为这个删除的用户需求,一款叫做 Clean Master 的应用还带动了猎豹移动的上市。
2、无奈的 Android Market
由于一些让人无奈的原因,各种水平不齐、鱼龙混炸的第三方市场充斥于市。而即使在官方的 Google Play 也经常爆出恶意软件或者仿冒软件。混乱的市场和不守序的开发者让 Android 的应用环境进入一个越来越差的死循环。
3、无解的碎片化
100 个 Android 手机制造商从 Google 那拿到 Android 代码之后,就可以制造出 100 种搭载不同硬件平台、界面的 Android 手机,即使是搭载完全相同的硬件,不同品牌的机器,运行速度,软件兼容性都会有区别,这就是 Android 开放带来的碎片化。
就这样,无论在先天还是后天上,Android 都注定着越来越卡,曾经的 4.4 没能解决,5.0 也不会解决。
那么 Android 5.0 Lollipop 若是没能解决卡顿,又到底改变了什么?
1、改变了运行环境,却没改变运行秩序
ART 带来的体验明显提升,告别了虚拟机的 Android 更快更省电,不过对于一些不遵守规则的应用而言什么都没变,还是想怎么折腾就怎么折腾。
2、加剧了本已严重的碎片化
Lollipop 的推出让很多 Android 用户欢呼了一阵,几个月过去后他们发现真相,自己的手机连 4.4 的官方更新都还没收到。于是大家就都明白了将希望寄托在新版系统身上,还真不如刷个 CM 或者 MIUI 包。
所以 Android 的卡顿其实从根源上就注定了没有办法解决,除非 Google 愿意放弃现有市场全部推倒重来,不过那样的系统和 Android 已经没有任何关系了吧?
其实 Android 粉丝们不必过分担忧卡顿,iOS 粉丝也不必庆幸流畅,毕竟库克的 iOS 8 已经开始砸金字招牌,说不定到了 iOS 10 与 Android 7.0 发布,大家都会变得一样,没个十核CPU加上8G内存大家都会变得一样卡了呢?
参考:
Android 为何比 iOS 卡?【转载】的更多相关文章
- Android与Swift iOS开发:语言与框架对比
Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...
- 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native
[源码下载] 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native 作者:web ...
- 使用 Xcode 和 Android Studio 管理 iOS 和 Android 项目版本
在移动应用开发和运营的过程中,版本管理是一个老生常谈的基础问题,一些版本的基本概念也常常会困扰我们的研发和运营人员.同时,手动管理软件版本,也常常会因为不小心导致后续的发布和更新问题. 这里,我准备了 ...
- Android ADT安装时卡在Calculating requirements and dependencies
AndroidSDK及Eclipse安装都很顺利,但是在Eclipse下安装ADT插件时,先采用点击Help->installnew software->Add...,无论输入https: ...
- HTML5网页录音和上传到服务器,支持PC、Android,支持IOS微信
准备做一个网页版聊天界面,表情啊.图片啊.上传文件啊都应该要有,视频就算了,语音还是要的. 本文记录的是在网页上用GitHub上的Recorder进行在线录音和上传到服务器,前几天升了一下级,以后有时 ...
- Xamarin.Form与Xamarin.Android或Xamarin.IOS的区别简述
Xamarin.Form与Xamarin.Android或Xamarin.IOS的区别简述: 可能刚刚接触Xamarin的人来说,对于这个概念比较的模糊,认为这说的不都是同一个东西吗?事实并不是这样的 ...
- android系统和ios系统是如何实现推送的,ios为什么没有后台推送
ios系统为什么没有后台推送? iOS 为了真正地为用户体验负责,不允许应用在后台活动.有了这个限制,但是对于终端设备,应用又是有必要“通知”到达用户的,随时与用户主动沟通起来的(典型的如聊天应用). ...
- Android 4.4 外置卡
虾米.酷狗.百度地图.UC浏览器 下载 可以设置下载路径保存到外置SD卡上. 其他的软件目前还不支持. 最终Android 4.2是可以选择的,后来Android禁用了外置卡,以上软件是如何实现的?
- Android模拟器使用SD卡
在Android的应用开发中经常要用到与SD卡有关的调试,本文就是介绍关于在Android模拟器中SD卡的使用 一. 准备工作 在介绍之前首先做好准备工作,即配好android的应用开发环境 ...
随机推荐
- chrome ui源码剖析-ViewProp
先熟悉set的find原理 http://www.cnblogs.com/Clingingboy/p/3252136.html 这个类改造下,还是非常实用的,可以对于不同的类型做数据存储 一.Vi ...
- ASP.NET MVC下实现前端视图页的Session
在ASP.NET MVC的控制器中可以实现Session处理.如果要在前端视图页实现Session该如何做呢?可以使用window.sessionStorage来做. AlexChittock用jQu ...
- Spring主从数据库的配置和动态数据源切换原理
原文:https://www.liaoxuefeng.com/article/00151054582348974482c20f7d8431ead5bc32b30354705000 在大型应用程序中,配 ...
- Linux学习7-tomcat部署多个项目(多个端口)
前言 前面已经在tomcat上搭建了jenkins的环境,如果我们有多个项目需要部署的话,如何在一个tomcat下部署多个项目呢? 前面是直接在:8080/jenkins访问的,如果有其它项目部署的话 ...
- parity 钱包
数据快照路径 C:\Users\admin\AppData\Local\Parity\Ethereum\chains\ethereum\db\906a34e69aec8c0d\snapshot\res ...
- Emgu CV
摄像头 Capture _capture = new Capture(0); _capture.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PR ...
- EditText 限制输入,自定义样式,监听输入的字符,自动换行
自动获取焦点 <!-- 添加:<requestFocus /> 会自动获取焦点 --> <EditText android:layout_width="matc ...
- 《ASP.NET Web API 2框架揭秘》
<ASP.NET Web API 2框架揭秘> 基本信息 作者: 蒋金楠 出版社:电子工业出版社 ISBN:9787121235368 上架时间:2014-7-5 出版日期:2014 年7 ...
- Kubeadm安装Kubernetes环境
Kubeadm方式号称一键安装部署,很多人也试过并且顺利成功,可到了我这里因为折腾系统问题,倒腾出不少的坑出来. kubeadm好处是自动配置了必要的服务,以及缺省配置了安全的认证,etcd,apis ...
- Restful API 的设计规范(转)
1. URI URI 表示资源,资源一般对应服务器端领域模型中的实体类.URI规范 不用大写; 用中杠-而不用下杠_; 参数列表要encode; URI中的名词表示资源集合,使用复数形式; 资源集合与 ...