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. SATA工作模式咋选?揭秘AHCI和IDE区别(全文)

    第1页:AHCI模式与Win7.SSD的不解之缘     AHCI这个注定和SATA接口结下不解之缘的接口模式,它担负着淘汰IDE模式的重任,从诞生开始就充满争议,它经历了整整7年时间.它伴随着SSD ...

  2. 解决Mac OS下安装MyEclipse报错:Your system does not have sufficient memory to support MyEclipse

    最近想尝尝鲜,FQ去www.myeclipseide.com上下载了最新版的MyEclipse 15CI版,安装的时候,报告如下错误(MyEclipse 14也会出现这个问题): Your syste ...

  3. CentOS MongoDB 高可用实战

    原文:https://www.sunjianhua.cn/archives/centos-mongodb.html 一.MongoDB 单节点 1.1.Windows 版安装 1.1.1 获取社区版本 ...

  4. iOS 使用宏 常量 报错 expected expression

    报错的代码: 报错原因:多写了一个分号!

  5. 安装oracle 11g环境变量ORACLE_HOME的一个问题 转

    http://blog.itpub.net/26129555/viewspace-1243467/报错内容: OUI-10137:An Oracle Home with name ORACLE_HOM ...

  6. 【Devops】【Jenkins】Jenkins插件安装失败处理方法

    本篇解释:Jenkins插件安装失败处理方法 不论是刚启动成功后进行的推荐插件安装,还是后期使用Jenkins过程中进行插件的安装.出现插件安装失败的问题,可以通过本篇解决! [注意,插件下载安装失败 ...

  7. LeetCode——Convert Sorted List to Binary Search Tree

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  8. Java常用排序算法及性能测试集合

    测试报告: Array length: 20000 bubbleSort : 573 ms bubbleSortAdvanced : 596 ms bubbleSortAdvanced2 : 583 ...

  9. SharePoint Online 创建资产库

    前言 本文介绍如何在Office 365中创建资产库库,以及资产库的一些基本设置. 正文 通过登录地址登录到Office 365的SharePoint Online站点中,我们可以在右上角的设置菜单中 ...

  10. [Android Pro] 组件化:企业级大型项目必经之路

    cp : https://www.csdn.net/article/2011-02-11/291667 摘要:超过一年以上.活跃开发的项目往往到后期陷入了一些共性的问题: 构建速度慢,往往生成一次最终 ...