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 卡?【转载】的更多相关文章

  1. Android与Swift iOS开发:语言与框架对比

    Swift是现在Apple主推的语言,2014年新推出的语言,比Scala等“新”语言还要年轻10岁.2015年秋已经开源.目前在linux上可用,最近已经支持Android NDK:在树莓派上有Sw ...

  2. 不可或缺 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 ...

  3. 使用 Xcode 和 Android Studio 管理 iOS 和 Android 项目版本

    在移动应用开发和运营的过程中,版本管理是一个老生常谈的基础问题,一些版本的基本概念也常常会困扰我们的研发和运营人员.同时,手动管理软件版本,也常常会因为不小心导致后续的发布和更新问题. 这里,我准备了 ...

  4. Android ADT安装时卡在Calculating requirements and dependencies

    AndroidSDK及Eclipse安装都很顺利,但是在Eclipse下安装ADT插件时,先采用点击Help->installnew software->Add...,无论输入https: ...

  5. HTML5网页录音和上传到服务器,支持PC、Android,支持IOS微信

    准备做一个网页版聊天界面,表情啊.图片啊.上传文件啊都应该要有,视频就算了,语音还是要的. 本文记录的是在网页上用GitHub上的Recorder进行在线录音和上传到服务器,前几天升了一下级,以后有时 ...

  6. Xamarin.Form与Xamarin.Android或Xamarin.IOS的区别简述

    Xamarin.Form与Xamarin.Android或Xamarin.IOS的区别简述: 可能刚刚接触Xamarin的人来说,对于这个概念比较的模糊,认为这说的不都是同一个东西吗?事实并不是这样的 ...

  7. android系统和ios系统是如何实现推送的,ios为什么没有后台推送

    ios系统为什么没有后台推送? iOS 为了真正地为用户体验负责,不允许应用在后台活动.有了这个限制,但是对于终端设备,应用又是有必要“通知”到达用户的,随时与用户主动沟通起来的(典型的如聊天应用). ...

  8. Android 4.4 外置卡

    虾米.酷狗.百度地图.UC浏览器 下载 可以设置下载路径保存到外置SD卡上. 其他的软件目前还不支持. 最终Android 4.2是可以选择的,后来Android禁用了外置卡,以上软件是如何实现的?

  9. Android模拟器使用SD卡

    在Android的应用开发中经常要用到与SD卡有关的调试,本文就是介绍关于在Android模拟器中SD卡的使用 一.      准备工作 在介绍之前首先做好准备工作,即配好android的应用开发环境 ...

随机推荐

  1. AutoMapper在MVC中的运用小结

    配置.单元测试.AOP注入 Decimal转换成String类型 源数组转换成目标数组 源中的集合(数组)属性转换成目标中的集合(数组)属性 子类父类间的映射 源字典集合转换成目标字典集合 枚举映射 ...

  2. 图解openssl实现私有CA

    原文地址:http://xxrenzhe.blog.51cto.com/4036116/1370114 废话不多说,先上图 说明1:蓝色部分为主要流程,黄色箭头指向具体的操作步骤 什么是openssl ...

  3. UITabBarController 详解之 hidesBottomBarWhenPushed的正确用法

    今天说的是在TabBar嵌套Nav时,进行Push的时候隐藏TabBar的问题. 之前项目也需要这么做,那时候iOS7还没出,也是各种搜罗,后来的解决方法是当push操作的时候自己隐藏Tabbar,p ...

  4. .Net中集合排序

    public class StockQuantity { public StockQuantity(string status, DateTime dateTime, int quantity) { ...

  5. .NET:默认是按值传递的

    小测试 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...

  6. Python中的文件IO操作(读写文件、追加文件)

    Python中文件的读写包含三个步骤:打开文件,读/写文件,关闭文件. 文件打开之后必须关闭,因为在磁盘上读写文件的功能是由操作系统提供的,文件作为对象,被打开后会占用操作系统的资源,而操作系统在同一 ...

  7. C#程序集Assembly学习随笔(增补版,附图)_AX

    上篇我讲了下我对Assembly的初步认知.现在来说说怎么使用已有的Assembly.比如说我在做一个解决方案时,发现你做的解决方案的某个项目中的类的方法(功能)我正好可以用到,哈,那我就不用写类了, ...

  8. pkg-config原理及用法

    原文  https://blog.csdn.net/luotuo44/article/details/24836901 我们在用第三方库的时候,经常会用到pkg-config这个东西来编译程序.那pk ...

  9. [转]在Windows中安装PhpUnit

    FROM : http://www.cnblogs.com/heiing/archive/2012/09/07/2674807.html 步骤: 安装 pear ,参见http://www.cnblo ...

  10. 检查安装的 DirectX 版本

    https://support.microsoft.com/zh-cn/help/179113/how-to-install-the-latest-version-of-directx DxDiag ...