作为测试你不可不知的 iOS 与 Android 差异点!

一、运行机制的区别

1、iOS 采用的是沙盒运行机制

(1)沙盒机制

        出于安全考虑,iPhone对于安装在上面的应用程序有所限制,这个限制就是应用程序只能在该程序创建的文件系统中读取文件,不可以去其他地方访问,此区域被称为沙盒,所以所有的非代码文件都要保存在此,例如图像、图标、声音,映像,属性列表,文本文件等。总体来说沙盒就是一种独立、安全、封闭的空间。

(2)沙盒机制的特点

        每个应用程序都有自己的存储空间。每个应用程序都不可以翻过自己的围墙去访问别的存储空间的内容(已经越狱的除外)。在访问别人沙盒内的数据时需要访问权限。沙盒(sandbox)的核心内容是:sandbox 对应用程序执行各种操作的权限限制。

2、Android 采用的是虚拟机运行机制

(1)什么是Dalvik虚拟机

        Dalvik 是 Google 公司自己设计用于 Android 平台的 Java 虚拟机,它是 Android 平台的重要组成部分,支持 dex 格式(Dalvik Executable )的 Java 应用程序的运行。 dex 格式是专门为 Dalvik 设计的一种压缩格式,适合内存和处理器速度有限制系统。 Google 对其进行了特写的优化,使得 Dalvik 具有高效、简洁、节省资源的特点。从 Android 系统架构图知, Dalvik 虚拟机运行在Android的运行时库层。

(2)Dalvik 虚拟机的功能

        Dalvik 作为面向 Linux、为嵌入式操作系统设计的虚拟机,主要负责完成对象生命周期管理、堆栈管理、线程管理、安全和异常管理,以及垃圾回收等。 Dalvik 充分利用 Linux 进程管理的特性,对其进行了面向对象的设计,使得可以同时运行多个进程,而传统的 Java 程序通常只能运行一个进程,这也是为什么 Android 不采用 JVM 的原因。 Dalvik 为了达到优化的目的,底层的操作大多和系统内核相关,或者直接调用内核接口。另外, Dalvik 早期并没有 JIT 编译器,直接 Android 2.2 才加入了对 JIT 的技术支持。

(3)Dalvik 虚拟机具有以下特点:

        使用 dex格式的字节码,不兼容 Java 字节码格式

        代码密度小,运行效率高,节省资源

        常量池只使用32位的索引

        有内存限制

二、两者后台制度不同

1、iOS 采用“伪后台”的形式

(1)iOS 系统的后台机制过程

        当我们程序从前台退到后台(按 home 键)后,将执行程序的委托方法,它的主线程会被暂停。应用程序只给了我们可怜的一点点时间(也就是秒级别的)来处理东西,然后,所有的线程都被挂起了。这个时候 APP 依然驻留在内存中,这种状态下,不调用苹果已开放的几种后台方法,程序便不会运行;如果在这个时候,使程序继续运行,则为后台状态;如果当前内存将要不够用时,系统会自动把之前挂起状态下的 APP 清出内存。所以我们看到,有些时候打开 APP 时,还是上次退出时的那个页面那些数据,有时则是重新从闪屏进入。

(2)iOS 系统后台机制大概可以分为5种状态:

        Not Running : APP 没有启动,也没有后台运行;

        Active :用户正在使用 APP,比如说我们聊微信看网页的时候,APP 就处于 Active 状态;

        Inactive :这是一个过渡的状态,APP 虽然打开了,但是用户没有跟 APP 有任何互动操作;

        Background:APP 在后台运行,微信会在没有打开的时候接收消息;

        Suspended:APP 虽然在后台运行,但是处于休眠状态,只占用一点内存。

2、安卓中任何程序都能在后台运行,直到没有内存才会关闭

(1)Android 真后台运行机制

        Android 上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机,每个 APP 都有自己的进程,每个进程都有自己的内存空间,这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存。以上这些设计确保了 Android 的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃。

(2)Android 的进程从高到低分为5种:

        前台进程:正在与用户交互的进程,通俗来讲就是你当前使用APP 的进程;

        可见进程:可以被用户看到,但是没有和用户交互,例如一个 Activity 以对话框的形式覆盖在当前 Activity 上面,当前 Activity 可以被用户看到,但是不和用户交互;

        服务进程:也就是我们常说的 Service ,能够运行在后台,常见的有音乐类的 APP ;

        后台进程:注意,这个后台进程不要和服务器进程搞混了,它的意思是说当前 APP 在后台运行,例如我启动了 APP ,然后点击 Home 键返回到桌面,那么这个 APP 就会被切换到后台进程;

        空进程:空进程指的是在这些进程内部,没有任何东西在运行。保留这个进程的唯一目的是用作缓存,以缩短该应用下次在其中运行组件所需的启动时间。

三、两者最高权限指令不同

1、iOS 中用于 UI 指令权限最高。

2、Android 中数据处理指令权限最高。

四、推送机制

1、iOS 在软件关闭的情况下,依然可以接收推送消息

        手机消息当然都是通过服务器推送到我们手机上的,对于iOS 的用户来说,苹果有 APN 服务器来负责消息的推送。当你第一次使用 APP 时,会询问是否接收通知,如果你选择了是,那么服务器就会记录你的 ID ,当有消息通知的时候,这些数据是先推送到苹果的服务器中,然后通过苹果的 APN 服务器推送到用户手机上的。这样的设计让软件彻底关闭的时候还可以接收到消息通知,一方面释放内存,一方面也不会耽误接收消息。

2、Android 在软件关闭的情况下,无法接收推送消息

        对 Android 手机来说,Google 也有类似的 GCM 服务器来推送消息,不过因为国内的手机都没有 Google 服务无法收到 Google GCM 服务器推送的消息。Android 的推送都是通过服务来实现的,就算应用没有启动但是服务还在一样可以收到推送。所以只能是 Android 自己启动 Service 来实现推送,当应用杀死后 Service 如果被杀死就无法收到推送。

五、渲染机制不同

Android:主线程普通优先级——加载一个页面,全部加载完成的同时加载当前页面,当你看到页面后,实际后台仍在加载,因此增加了处理器的压力。

iOS:实时优先级——加载整个页面,优先加载主屏幕显示区域

六、开源性不同

Android:完全开源,任何开发厂商和开发者都可开发安卓的软件,由于开源,各大品牌手机硬件差异大,导致体验不同,兼容性不好

iOS:封闭,仅苹果拥有

七、编程语言不同:

Android:java

IOS:Objective-c

八、升级应用

Android:自动升级应用,也可通过应用市场来升级

IOS:需要通过app store升级

九:软硬件结合

Android:由于代码开源,因此很多开发厂商都可以根据自己的设定来开发不同的手机,APP不会针对各大品牌的手机专门做优化,因此软硬件结合差

IOS:由于封闭,因此苹果一家独有专利,所有的APP都针对IOS做优化,因此软件结合较好

十、应用的删除操作不同

Android:常见的删除某一个操作,用长按,点击删除或者左滑删除

IOS:很多应用都支持左滑删除操作

十一、获取日志和签名方式不同

Android:可通过adb logcat获取日志,Android studio,DDMS来获取到日志信息。签名可以通过jarsigner -verify -certs 包名

IOS:用xcode中debug工具/Itunes高级功能查看实时log,获取签名:解压包取出plist文件,查看应用签名及版本信息,并要检查证书正确性

十二、分辨率不同

Android:分辨率多达20多种

IOS:5种

十三、按键

Android:底部有3个按键:返回键、主菜单、前进键,在应用返回中,都可通过返回键回退到上一步

IOS:只有home键,所有的应用进入只有一个入口,每个应用界面中都有返回出口

总结:

Android:开源、界面好看,但安全性差、漏洞多、稳定性差、系统耗电大、流量消耗大

IOS:封闭、安全规整、用户体验好

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,392评论 25 707
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生x阅读 15,967评论 3 119
  • 下午下了班就开会,7:00左右散会,就着急回家,一路上春寒料峭,寒风瑟瑟。到了家,孩子就跟我说:“妈妈,我今...
    上善若水_f9f1阅读 173评论 0 1
  • 曾经有一条随心的道路放在我面前,我没有去走,等我错过的时候我才后悔莫及,人世间最痛苦的事莫过于洗脑。 如果上天能够...
    锦程写书阅读 225评论 0 1
  • 脂肪不躲避 附着于年轻的身体 生存于他人注视 喋喋不休的沉默日子 何种目的 基于 赞叹的注目礼 幻想的甜蜜 合体的...
    芥一子阅读 246评论 3 5