Android M新特性
**为什么叫 android M**
------------------
Google在2015年9月30号凌晨发布了Android6.0,代号Android M,全称Android Marshmallow。大家都知道google是一家非常有意思的公司,每发布一个android版Google都有一个版本代号,当然也会有一个新的小机器人摆在Google总部大楼门前,另外Google一直喜欢用甜食的名称给自己的Android系统版本命名,而且一直按照英文字母ABCDE...这样的顺序往下排列,现在已经排到了M,最新的6.0版本Marshmallow是棉花糖的意思。不出意外,我们甚至可以推测Android7.0的代号应该叫Android N。
合并分区优化存储
---------
Android用户大概可能都碰到过这样的场景:我装了一些应用程序之后,会提示我手机存储空间不足,但是我我的手机内置存储空间是16GB的,可能我还有个外置SD卡,存储空间明明相当富余。这是Anroid6.0以前存储分区机制的问题。其实大家可以对比windows系统来理解,Android系统本身也是有很多分区的,就像windows会分系统盘,D盘,E盘等等。Android系统有boot分区,recovery分区,system分区,userdata分区,存储分区。其中boot分区就是引导分区,和windows的boot引导分区类似。boot英文单词的意思是领着鞋带提起的意思,这个很形象的描绘了一个操作系统的启动过程。一个庞大的操作系统在启动的时候并不是一下加载到内存里的,启动的入口只是一个小小的程序,小程序启动内存里的一个大一点的程序,大一点的程序再启动磁盘上的一个更大一点的程序,这样逐层启动。这个boot就是引导操作系统启动的那个小程序。那recovery分区就很好理解了,是恢复分区,大家可以类比windows的ghost;再说system分区,就是windows的C盘;userdata是个什么鬼,没错你的应用程序都安装在这里了。最后这个存储分区才是你手机平时存放照片歌曲小电影等等数据的分区。试想即便你的手机空间很大,但不幸的是userdata很小,那一样会很悲剧。那Android6.0以后这个问题将不复存在,因为6.0对系统分区进行了合并,不用再担心提示空间不足的问题。
## 墓碑机制优化内存 ##
大家再设想这样一个问题,为什么我的Android手机配置完爆同事的水果,RAM高达3个G,同事的水果才1GB,但我的Android却没有水果流畅。这时候你会不会气愤的骂一句:Android真垃圾。这又是为什么呢?早在那个“三足鼎立”的时代,有个问题就一直被拿来比较,就是操作系统的多任务问题。当时的IOS还是单任务,WP是采用墓碑机制的伪多任务,Android从1.0版本就一直是多任务。Android可能还嘲笑过另外两个对手,但是数年后Android意识到了自己的问题,因为手机的屏幕有限,展示在前台的只有用户当前正在使用的应用,或许墓碑才是多任务的最佳解决方案。墓碑是什么意思呢,简单来说就是如果一个应用程序被切到后台就杀死它,然后在磁盘上记录一下应用被杀死时的状态,就好比是竖了块墓碑,当应用从后台重新切回前台时再从磁盘读取应用被杀死瞬间的状态数据,把应用还原成被杀死前的状态,就好像它从来没被杀死过。虽然从磁盘还原应用状态信息不比从内存加在速度快,但是这些完全可以通过动画等手段进行视觉干扰,让用户根本察觉不到。没错,问题就出在Android的多任务机制上。Android的运行内存一直被开发者所诟病,一不小心就OOM了,那内存都去哪了呢。答案是大量的内存都用来保存后台程序的运行状态了,那么前台程序的可用内存就变得捉襟见肘了。6.0之前的系统是这样,假如我手机启动了4个应用ABCD,其中A在前台可视,BCD在后台责被保存在内存中,内存不足时会杀掉后台应用。但Android6.0引入了墓碑机制,当应用被切入后台时,应用的运行数据会被保存在磁盘上,这样运行内存空间就得以释放,提供更多的空间给前台应用。这对Android开发中来说也是一个福音,对用户来说,6.0之后你的Android手机就可以德芙纵享丝滑了。
更快的系统更新
-------
因为Android是开源的,每次版本升级之后,各大手机厂商会修改源代码做一些定制化的处理,这个过程是非常耗时的,所以每当新系统出来,用户可能要半年以后才能体验到,为了能更快的更新系统,让用户第一时间用上最新的Android系统,解决系统碎片化的问题,Google将Android系统做了拆分,一部分是手机厂商可以修改的部分,一部分是手机厂商不能修改的系统核心部分。这样每次系统更新的时候,Google只需要更新核心部分,而不需要去更改厂商的那部分,用户的操作系统就可以随着核心升级而升级。
电池续航改进计划
--------
用Android手机的男人都是好男人,因为他们每天晚上都要回家给手机充电,这是一个很老的段子了,当然这是在黑Android系统耗电快的问题。你一定经历过这种事,一觉睡到10点,上班迟到,TMD手机没电自动关机了闹钟没响,不可能,我睡觉的时候手机明明还有80%的电。那么问题来了,电量都去哪了?除了系统本身待机需要耗不太多的电外,应用程序频繁的后台自启动大概是消耗电量的罪魁祸首了,当然这很大程度上是因为国内的软件厂商不节制,动不动搞个service后台自启动,其实在Android 5.0的时候Google已经做过电量优化,在6.0又做了进一步优化,并开发了更强大的电量消耗分析器。下次一觉醒来发现手机又没电了,去看看到底是谁在搞鬼,然后就可以跟那个应用say goodbye了,我已经卸载了好几个了。Android系统在待机的时候并不是真正的休眠了,而是隔一段时间醒来一次,检查下自己的状态,防止自己睡死过去了,这大概和我们人睡觉的时候隔一段会翻个身磨磨牙伸伸腿一样吧,要不然真是纹丝不动的睡8个小时应该是很难受吧。系统每醒来一次要花2分钟再重新睡去,可以理解为每醒一次待机时间缩短2分钟,可想而知假如手机装了50个应用,平均每个应用每小时后台自启动一次,那系统根本就没法休眠了,就一直在运行状态,耗电速度可想而知。Google6.0在电量消耗上的解决方案是这样的,拉长系统醒来的时间间隔,然后在系统醒来的同时,让需要自启醒来的应用也同时醒来。简单理解就是要睡大家一起睡,要醒大家一起醒。这样相信6.0后拿Android手机的男人就可以在外过夜了吧。。。
APP LINKS
---------
APP LINKS从字面意思我们大概也可以猜到,就是打开应用的链接,设想这样的场景,假如我在浏览新闻,新闻里提到了一家很棒的丝袜奶茶,我特别想喝,那我是不是要退出新闻,点开美团或者饿了么去搜那个奶茶,然后下单购买。现在不需要这么做了,也许我只需要点击一下奶茶(别让刘强东看见了),就能启动饿了么,然后下单购买,这体验是不是很棒。当然在这之前我们也可以通过javascript去调某个应用,或者更暴力一点直接intent。但是官方现在告诉我们不需要这么麻烦了,我们只用配置下应用名包名,当然你还需要有一个秘钥,就能通过APP LINK的方式来启动应用。
其他
--
6.0还有很多用户层面或者一些小的其他的改进,比如应用数据自动备份(天朝基本无用),免root卸载内置应用,哦,对了6.0官方关闭了root通道,不允许用户再拥有root权限了,不过自然会有大牛破解。新增了夜间模式,这对于开发者来说也许是个福利,我可没忘当初夜间模式我们做了两套UI,想想也是够2的。改进了通知栏,更简洁美观了。提供了指纹识别API。移除httpclient等等。。