注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

邓征宇的BLOG

一个硬币总有不同的两面。

 
 
 

日志

 
 

安卓的优化和负优化  

2017-04-20 10:58:20|  分类: IT 和应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

我在1990年代末用过Linux,发现相同硬件条件下,对比Windows 98 SE/NT 4.0,它的桌面程序的卡顿很严重,从而给我留下了深刻的印象。到了2008年以后,移动通信的3G时代,我的这种看法自然也被我带到了安卓手机上了。不过,当时的安卓机确实也是卡得很,与同期的苹果iOS 上面丝滑般的流畅体验差得太远。我一直没有入手安卓手机,停在用诺基亚功能机的阶段,这种差劲的体验就是其重要原因之一。其次,就是我对手机的要求并不高,觉得有笔记本电脑和功能机用就行了,智能手机实在多余,观念还停留在2G时代。当我决定入手智能手机的时候,由于苹果的封闭和高价,以及我对手机与电脑的连接性的强调,对生产力的强调,当时我毅然选择了WP 8.1 的Lumia。今天,Windows 10 Mobile 生态实在落后太多,加上微软不再为638升级,我终于决定成为一个“双机党”,入手一部配置并不高的安卓手机。其次,我很想深入体验一下今天的安卓系统(家里已有多部苹果iPhone了)。

我不喜欢苹果iOS的封闭,但是喜欢它的UI体验。同时我喜欢WP的生产力,与windows 互联的便捷性,但是不喜欢它的磁贴。只有安卓的开放,把苹果UI 体验和WP的生产力结合起来了。

但是,安卓的卡顿的印象,让我对它敬而远之。这种情况与它的RAM内存管理机制,即与Linux有关,也与安卓过于开放有关,流氓软件太多,要的权限过大,消耗过大。何况安卓的应用为了强调通用性,都是基于Java开发的,运行效率本来就不会太高。

而一般用户总是按照windows的内存管理习惯来要求安卓的,以为RAM的空闲越多越好。国内许多公司的安卓定制ROM的优化方法就是这么设计的,结果就有些不伦不类了,剑走偏锋。比如一键加速功能,把所有应用一次杀光,包括流氓应用在内。还有一些大厂的体验打分的管理软件也是在误导用户。

Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。

Linux和安卓的RAM内存管理与windows phone、苹果iOS也不同。安卓代替塞班,成就全球新霸主的历史,可以参见百度百科。

*******************

为什么你们还觉得iOS会比Android流畅

http://mobile.yesky.com/285/156898285.shtml

事实证明,流畅这个命题实在太主观意见了。但大部分人还是觉得iOS会比较流畅。

首先,让我们感觉到系统的流畅的器官是人眼,时刻捕捉屏幕的每一次刷新,关系到系统的响应机制。在iOS上,系统响应的优先级是Touch→Media→Service→OS,分别对应是触摸→媒体→服务→操作系统,这里面触摸反馈是最优先响应的,所以能给人反应迅速的系统特点。

而Android的响应优先级是App→Framework→lib→Kernel,对应的应用程序→框架→系统→内核,而屏幕响应是在系统层,这也让很多人感觉Android不如iOS流畅的原因。

还有一个是图形处理器GPU,它是系统流畅性的核心硬件之一。但这里我们说是软件系统,苹果一贯领先的硬件我们暂且不提。

再者是开发和运行环境,众所周知Android的编程语言是Java,跑在Dalvik虚拟机上的,早期用来抢占市场2.x版本,流畅性确实不怎么样。但经过这些年谷歌的优化,3.x、4.0、4.1、5.x这些版本的渲染机制都有了很大的变化。

特别是Android 4.4时候的ART模式,让虚拟机运行减少了本地翻译的工程量,卡顿问题也大幅缓解。到了现在的6.x和7.x基本都只是修修补补。

另一边是iOS,编程语言是Objective-C,这个没什么好说的,基于苹果封闭的生态链,iOS系统适配的机型很少,即使有毛病也能很快解决。总的来说,现在的Android是一个很完善的操作系统,在流畅的程度上不弱于iOS。

但大多时候Android就真不如iOS,我们对比一下两个系统的根本区别。

  Android系统开源 —— iOS系统闭源

  Android系统适配不同类型设备 —— iOS系统仅支持自家手机平板

  Android系统兼容不同外接设备 —— iOS系统仅支持苹果认证设备

  Android设备由多家厂商提供 —— iOS设备由苹果垄断独产

(这种情况类似于Windows PC 与苹果MAC之间的对比。)

发现问题没有?适配Android的那么多设备,每一次系统更新,开发者需要为每一部Android做出权衡。尽管谷歌在新系统适配上,可以将亲儿子(Nexus、Pixel系列)的优化做到极致,但这放到APP开发可行不通。

每一款应用都应该以更多适配机型为前提,这对于Android开发者来说,面对那么多分辨率的安卓设备就够头疼了。反之,iOS开发可以专心极致优化,因为适配的就那几款设备,交互的效果也可以多做一点。如果细心,你会发现在王者农药上,特效全开的iOS画面会比Android更绚丽一点,而且流畅度完全不降。

由于Android系统是开源的,导致在这上面的APP良莠不齐,这对大部分安卓手机来说不也如此吗。记得在很早之前,可可入手过一部HTC G13,那是一部彻彻底底的奸商机(这里指经销商),它将很多垃圾APP一股脑塞到内置ROM里面,导致原本只有512MB的闪存硬生生被砍掉一半,没办法在应用内删除。

而且还锁死了BootLoader,让你没办法通过一般的刷机解决问题。到后来,虽然绕过BootLoader线刷recovery搞定了,但也让我对Android系统抱起了十二分敬意。

现在的Android手机固然不存在这种恶意捆绑,但开源的弊端还是显而易见。那就是各品牌的Android手机仍充斥着厂商所谓的订制化,将手机界面乱改一通,起一个别人看不懂的名字加OS,就俨然像自己开发的系统一样。甚至照搬iOS的UI设计,什么使用N个月不卡,我差点就信了。(这最后一句话不就是在说vivo吗?)

我知道很多人想说iOS的伪后台机制(墓碑机制),这种类似休眠的作弊,不像安卓的多进程耿直后台(真后台,安卓天生得了Linux的病),占用的资源很少,所以才让iOS万年流畅。(作者:黑子可可  责任编辑:刘炜博)

http://os.51cto.com/art/201309/411937.htm

经常遇到一些刚接触Linux的新手会问内存占用怎么那么多?在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方面,区别于Windows的内存管理。

其主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入物理内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。而Windows是只在需要内存时,才为应用程序分配内存,并不能充分利用大容量的内存空间。换句话说,每增加一些物理内存,Linux都将能充分利用起来,发挥了硬件投资带来的好处,而Windows只将其做为摆设,即使增加8GB甚至更大。

Linux的这一特性,主要是利用空闲的物理内存,划分出一部份空间,做为cache、buffers ,以此提高数据访问性能。

页高速缓存(cache)是Linux内核实现的一种主要磁盘缓存。它主要用来减少对磁盘的I/O操作。具体地讲,是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理 内存的访问。磁盘高速缓存的价值在于两个方面:第一,访问磁盘的速度要远远低于访问内存的速度,因此,从内存访问数据比从磁盘访问速度更快。第二,数据一旦被访问,就很有可能在短期内再次被访问到。

Linux操作系统的内存运行原理,很大程度上是根据服务器的需求来设计的,让一个应用始终处于伺服待命状态,休闲时并不真正退出,不释放所占内存,例如系统的缓冲机制会把经常使用到的文件和数据缓存在cache 中,linux总是在力求缓存更多的数据和信息,这样再次需要这些数据时可以直接从内存中取,而不需要有一个漫长的磁盘操作,这种设计思路提高了系统的整体性能。(这就是平时所说的真后台机制。)

对于桌面和移动应用环境,依照的是服务器的需求来设计(真后台机制),所以安卓还需要一个严格的墓碑机制(伪后台机制),而这正是安卓目前所欠缺的。

http://www.aichengxu.com/android/11063918.htm

Android是基于Linux的,而Linux底层内核有自己的内存监控机制,即OOMKiller。一旦发现系统的可用内存达到临界值,这个OOM的管理者就会自动跳出来清理内存。OOMKiller有不同的策略和不同的处理手段。

基于Linux内核OOM Killer的核心思想,Android 系统扩展出了自己的内存监控体系。因为Linux下的内存杀手需要等到系统资源”濒临绝境”的情况下才会产生效果,而Android则实现了自己的Killer。Android 系统为此开发了一个专门的驱动,名为Low Memory Killer(LMK)。

安卓设定空余内存的最低阀值,当内存低于这个阀值时,将关闭优先级最低的进程(使用频率低的先关闭),从而释放出更多的空余内存,直到空余内存足够运行新的程序和数据时为止。程序完全关闭后,安卓将其以6、7级别保存在内存中,同时,其运行的数据以缓存的形式保存在内存中,从而便于下次能迅速打开这个程序。所以我们经常看到安卓的内存几乎爆满,但是系统仍然不失流畅,除非你手机固有内存本来就很小或者打开一个大程序。

安卓的RAM不是空闲越大越好。2G,不存在RAM吃紧问题, RAM占用越大,系统速度越快。操作系统内存地址是系统进程,系统缓存,应用程序进程,应用程序缓存是共享的。杀了应用程序进程清除了应用数据缓存,有更多的空间给了系统,系统当然流畅了,但应用程序缓存被清除了,就意味着再次进入应用程序的时候会耗费额外的cpu资源来生成窗口创建应用程序缓存和进程,这是一个相比保留应用程序缓存和进程在内存里更加耗费电力和系统资源的操作。所以为了节能,手机操作系统在内存管理上都只会按照优先级处理系统进程和应用程序进程数据而不会强制清理应用程序,只要RAM够大,没有出现地址耗费殆尽的情况,就不会去清理任何东西,再一次启用同一个进程会秒开,而清理之后就等于重新打开,明显慢一些。这就是安卓的真后台不同于WP/iOS的伪后台的地方。

http://android.265g.com/sjjq/15819.html
空闲RAM确实大了,用起来反而更卡了。RAM被用满了是件好事。它意味着你可以快速打开之前打开的软件,回到之前的位置,所以Android很有效的使用RAM。很多用户看到他们的RAM满了,就认为拖慢了他们的手机。而实际上,退出后重启这些程序才真正拖慢了手机的响应。而且一些公司的自动杀进程的软件本身是个时刻活跃的进程,它始终在后台保持活跃,使得CPU难以消停,反而增加了耗电量。

这个问题最终我觉得应该怪程序员。许多国内的Android程序员编写的程序根本就没有对进程进行分类,总是试图将所有进程都保留在内存里(例如某著名手机浏览器),向系统索要的权限过大。这就使得这些程序即使放到后台了,它也不许系统对其进程进行释放。所以这里建议,对于很多国内软件,用完之后还是按一下退出吧,而对于规范化的程序,以及系统自带的那些程序(例如谷歌程序基本都没有退出),用过之后放后台就好。

1.养成良好的软件使用习惯,不用了就退出。左键菜单退出、亦或程序关闭按钮、亦或直接右键返回桌面,切忌中间HOME键。

2.关闭第三方杀软、不必要的防火墙,比如来电防火墙、短信防火墙、邮件防火墙,前提你不是专门做电子商务的,一般情况下哪有那么多骚扰。别盲目的认为全部开启是最安全的,要知道每道防火墙就是一个常驻进程,一直处于活跃状态,撇开RAM不谈,耗电量也不容小视。

*****************

安卓的卡顿一直为人所诟病,特别是安装大量App后,RAM很快就会被耗尽,系统效率也随之下降。安卓4.4是极具效率的安卓系统,系统流畅度令人满意。但尽管安卓4.4很流畅,第三方App却在拖效率的后腿。

可与iOS系统媲美?安卓4.4真实使用体验

http://pcedu.pconline.com.cn/467/4672068_1.html

半年前,安卓4.4发布,狼再次来了!这次狼来了可不同凡响,与因更改设计风格(扁平化设计)被推到刀尖浪口的iOS 7不同,安卓4.4的出现好评如潮。不为别的,就因安卓4.4主打“提高系统效率”这张牌——这可是安卓首次新版比旧版更省资源!对比一下所占资源远超前代的iOS 7,就显得更感人肺腑了。而ART运行环境的引入,更是让安卓从此摆脱了低效Java虚拟机的帽子,安卓App运行的机理看似有了和iOS App平起平坐的资本。从多个方面来看,安卓4.4似乎真的趋于完美了。

然而舆论和实际往往有偏差,君不见安卓2.3带来Dalvik虚拟机,就已经有人在唱安卓如同iOS一样丝滑流畅?转过头来安卓4.1就带来了黄油计划,人们再次为安卓的丝滑流畅欢呼——这简直是打安卓2.3的脸啊。安卓4.4真有这么神?今天,笔者就自己的使用经历,来为大家分享一些安卓4.4的真实使用体验。在正文开始前,笔者可以先抛出结论:这一次,iOS真的有压力了。

安卓除了系统本身的原因,不讨人喜的地方还有一个——多数用户很难接触到最新最正宗的安卓系统,这也许会让安卓的体验打了折扣。

几乎所有的安卓厂商,都有定制安卓系统的习惯。安卓到了用户手里,往往就不是Google想要塞给用户的那一套了。在多数情况下,第三方厂商修改过的安卓系统会比原生系统多出了不少累赘,拖慢效率——这也许正是大家觉得安卓卡慢、耗电的一大原因。不少用户升级到了安卓4.4后,仍觉得体验不好,这也许就是因厂商修改安卓造成的。比如说,索尼某些机型升级安卓4.4,会出现微信花屏、设置菜单卡顿等问题;而大多数机型的安卓4.4,都不附带ART模式。和原厂的安卓4.4相比,修改过的安卓4.4会缺失功能,性能表现也不如人意。

基于这点,笔者的使用体验基于Nexus 5和原生安卓4.4——就如同iPhone是iOS的标配一样,只有在Nexus上才能体验到最真实的安卓。

安卓不流畅?安卓4.4真的不卡了

对安卓“卡顿”这点口诛笔伐,似乎已经是常态。但从安卓4.1引入了黄油计划开始,安卓开始利用GPU渲染系统界面,流畅度跃上了一个台阶。然而,从安卓4.1到安卓4.3,都是吃资源的狠角色,即使是高配机型,偶尔仍会吃不消,出现暂时的卡顿现象。令人欣喜的是,这个现象在安卓4.4中得到了很大改善,如果单从系统本身的角度来看,卡顿几乎是不存在的。

实际上,安卓4.1在一般情况下的流畅度已经足以令人满意,只是难以一直保持;而安卓4.4的改进主要是能够一直保持流畅,体验更上一层楼。

不过,安卓4.4是不是绝对流畅呢?笔者认为还谈不上。

首先,安卓4.4在某些第三方App中,如果不开启强制GPU渲染,还是会卡顿。这里特别点名批评腾讯的App,不但腾讯地图、腾讯微博这些不按照Android Design设计的App在某些界面卡顿严重,连使用了Holo风的新版微信,缩放图片是帧数也惨不忍睹。安卓4.4和iOS流畅度的最大差距,也许还是在第三方App中。

其次,如果后台被占满,那么安卓4.4的系统界面也是会出现卡顿的——虽然这种情况一般不会在安卓4.4中出现。而在iOS中,基本不存在会让资源占满的后台,所以iOS在流畅度保持方面还是要比安卓4.4出色。

尽管和iOS仍有差距,但总的来说,安卓4.4的流畅度还是非常令人满意的。有朋友可能会问,开启ART后,流畅度会不会有进一步提升?就笔者的个人体验来说,如果不和Dalvik做对比,其实很难感受出来。在Dalvik的环境下,安卓4.4的流畅度和反应速度也谈不上慢,同时兼容性要比ART强——ART运行模式也许的确能提高效率,但目前ART仍处于测试阶段,想要畅享ART,也许还得等下一个安卓版本。总的来说,安卓4.4已经很少遇到卡顿的情况,再拿不流畅给安卓说事,未免也太不够与时俱进了。

安卓耗资源?安卓4.4后台管理大进步

安卓的另一大毛病,就是后台乱七八糟。前面也提到过,如果不装什么东西,保持系统纯净度,安卓4.1以后的安卓系统都能称之为流畅。然而一旦有了后台,事情就难说了。令人欣喜的是,安卓4.4的后台管理有了非常非常大的进步,而这点,实际上也是Google官方认定的安卓4.4最大卖点之一。

大大减少了内存无法释放的情况。切换后台更迅速。流氓App无法再偷偷常驻后台。实际上,这项特性是在安卓4.3中开始出现的。在安卓4.3以后的版本中,如果一个App持续请求常驻后台并消耗资源,那么该App就会被显示在通知栏中,安卓会提醒用户有App在常驻后台,用户能够发现该App并强制停止。这样一来,流氓App作威作福的机会就被抹杀了。多任务切换更迅速的同时,能够保持在前台的App也更多,切换七八个App无需重新加载完全没有问题——虽然还是不如iPhone 5S上iOS那样能够切换12、13个App无需重载,但考虑到iOS的多任务往往只是唤醒墓碑,安卓4.4也已经实属不易。另外,安卓4.4的RAM不会再越用越少,这能大大增强系统的稳定性,安卓4.4完全能够做到如同iOS一样长期不关机、不重启使用。

安卓太费电?安卓4.4待机挺节能

安卓之所以被扣上“电老虎”的帽子,并不是因为亮屏使用时有多耗电,实际上现在的高性能手机就没有哪个刷网页看视频玩游戏时还能挺省电的。人们对安卓耗电最大的不满,在于待机时也会掉电如尿崩。你可以放心地把iPhone不插电放床头,一晚上电量几乎不动,但如果把安卓这样放置Play,很有可能第二天的闹钟就因为电量不足闹不起来了。安卓4.4表现如何?得益于后台机制的改进,安卓4.4在待机耗电方面表现很理想。

前面提到,安卓4.4对后台有了更严格的限制,这不仅让多任务切换和系统流畅度保持方面得益,也对待机续航有很大帮助。在安卓4.4中,屏幕一旦熄灭,CPU几乎就会都处于休眠状态,将耗电量压到最低。同时,这并不影响App消息的推送,CPU只有在收到App消息推送等短暂片刻,才会被临时唤醒,随着屏幕的再次熄灭,又迅速回到休眠状态。可靠的后台管理令CPU能够及时休眠,让安卓4.4待机耗电表现逼近iOS。

安卓4.4完美吗?细节还是有待雕琢

流畅、后台和耗电,是人们诟病安卓最多的问题,在安卓4.4中,这三块短板已经得到充分补足。在功能上,安卓使用体验与Windows接近,也基本没有什么令人怨声载道的缺点。那么安卓4.4是否已经足够完美?笔者认为,在某些细节上,安卓4.4还是会令强迫症者犯病的。

充电图标配色不协调。文字描述标点符号用法不一致。卸载App会让桌面多出空白页。桌面图标有时候会乱掉,某些桌面图标会消失。移动数据不时断开。多任务切换界面App缩略图会丢失。笔者使用中主要发现的小瑕疵主要就是上面几点,其实也都不太影响日常使用。这类细节上的毛病其实每个系统都会有,iOS 7也曾经有过桌面翻页指示器不位于正中的小瑕疵。如果你没有什么强迫症,这些细节压根就不会入你眼。

总结

其实从安卓4.0到安卓4.4,安卓的界面、功能都没有发生太大改变,但这并不等于Google没有在安卓下功夫。Google无时无刻不在雕琢安卓系统,安卓4.0定下了Android Design的调子并使用OpenGL绘制界面,安卓4.1加入“黄油计划”,动画特效的优化,再到安卓4.3新增Trim支持,到了安卓4.4,从安卓4.0打下的基础终于算是发展到了大成。虽然安卓App的质量仍难以和iOS App相比,但就系统而言,安卓4.4的出现让卡顿、耗电等安卓短板得到了极大的补足,“丝滑般流畅”不再是iOS特有。安卓仍在进步,期待安卓4.5/安卓5.0的表现吧。

4.4:对齐唤醒。5.0 ART虚拟机。6.0,Doze 嗜睡模式。7.0,优化系统代码。8.0,针对低配设备的android go,系统/应用启动优化。

********************

http://tieba.baidu.com/p/2694326053

在Google的全力推动,以及硬件厂商的响应下,Android还是跨越各种阻碍,逐渐壮大起来了。在此过程中,Google也在经历着重大的变化。它逐渐从一个只重视数据的公司,转变为一个重视设计和用户体验的公司。从Android 4.0开始,Android 拥有了自己的设计语言和应用设计指导。与此同时,Google也在着手解决卡顿问题。Android 4.1的“黄油计划”(project butter)使系统和应用运行都更加顺畅,而Android 4.2的“Project Svelte”提升了内存管理,使得系统能够顺利运行在硬件配置低端的设备上。

但是,所有这些都没有解决核心问题,那就是应用运行环境。Dalvik VM效率并不是最高的。从Android 4.2开始,Google 开发者引进了新的Android运行环境ART(意思就是Android Runtime。Android官方页面的介绍中,也将其称作新的虚拟机),以替代旧的Dalvik VM。它现在(4.4)是实验选项,系统默认的运行环境仍然是Dalvik。ART会为Android带来怎样的改变?
  ART的机制与Dalvik不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译 (AOT,Ahead-Of-Time)。这样的话,应用的启动和执行都会变得更加快速。

根据一些基准测试,新的运行环境能够使大多数应用的执行时间减半。这意味着,CPU 消耗大、运行时间长的应用能够更加快速地完成,而一般的应用也能更加流畅,比如动画效果更顺畅,触控反馈更加即时。在多核处理器的设备上,多数情况下只需激活少量的核心,或者能够更好的利用ARM的big.LITTLE架构。另外,它将会显著提升电池的续航能力以及系统的性能。
  预编译也会带来一些缺点。一方面,机器码占用的存储空间更大。字节码变为机器码之后,可能会增加10%-20%,不过在应用包中,可执行的代码常常只是一部分。比如最新的Google+ APK是28.3MB,但是代码只有6.9MB。另一方面,应用的安装时间会变长。至于延长多少时间,取决于应用本身,一些复杂的应用如Facebook 和Google+会让你等待更长时间。

总的来说,ART的优点还是远远超越其缺点的。毕竟,影响用户体验的要素中,电池续航和应用顺畅运行更为重要。我们仍然不知道ART何时能够替代 Dalvik,不过AndroidPolice网站说,Google已经秘密开发了两年之久。Android摆脱卡顿的希望,看来就是它了。

安卓的优化和负优化 - 小宇 - 邓征宇的BLOG

安卓5.0的ART技术让多个App同时运行的效率大幅提升,而且性能不会随着使用时间变长而下降。

自从谷歌在安卓5.0 默认加入ART模式后对安卓的流畅性方面实现了质的飞跃,甚至可与iOS系统相媲美。Art模式是谷歌Android4.4系统新增的一种应用运行模式,与传统的Dalvik模式不同,ART模式可以实现更为流畅的安卓系统体验,对于大家来说,只要知道ART模式可让系统体验更加流畅,不过只有在安卓4.4以上系统中采用此功能。

***********

原生安卓从4.4(有人说是5.0,还有人说是6.0)开始就已经优化得很流畅了,只是由于碎片化,各厂商有各种负优化,又由于安卓的开放性,让一些不良应用(全家桶)在后台出现各种耍流氓,拖累了系统。

安卓的存储资源管理与Linux 类似,一个应用退出以后,应用的内存并不主动释放,系统和应用对内存是全占式的,不留空闲,以达到最大程度的提高存储资源的利用率,等到第二次打开它的时候,响应也快。所以退出应用,其实这个应用并没有真正退出,给流氓应用提供了可乘之机。

不能按传统Windows的管理利用方式来对安卓做相同的要求,安卓的卡顿貌似是一种常态,但是也不会过分。但是一般人并不理解这种做法。

而苹果系统里(iOS),应用退出以后,就直接挂起,释放绝大部分内存,但不占用更多的内存,这似乎与windows 10 UWP 的管理机制一样,这种机制介于Linux/ 安卓和windows win32 之间。

后台管理机制,墓碑机制

ios和wp都是墓碑机制,但是ios的墓碑机制是半开放的,软件可以通过接口访问系统数据或其它软件的一些数据,wp几乎是完全封闭的,开发wp软件的难度高,所以wp软件少、质量差、功能少。也因为这样ios系统有漏洞可以越狱,而wp则是最安全的系统。安卓的特点就是全开放系统,不可能采用墓碑机制,因为有流氓软件。

墓碑机制是微软Windows Phone 7手机操作系统中的一个程序运行规则。说简单点,就是手机上一个任务被迫中断时(如有电话打入),系统记录下当前应用程序的状态后,(像把事件记录在墓碑上一样),然后中止程序。当需要恢复时,根据“墓碑”上的内容,将程序恢复到中断之前的状态。这样的一种机制就是“墓碑机制”。

现在苹果设备1G内存情况下,被挂起的应用进程被杀掉的情况还是相当常见的。墓碑机制用的最好的是IOS,虽然是微软搞出来的,目前安卓阵营还真没有。墓碑机制的核心是缓存, 表现方式是推送至系统前台, 目的是省电、省资源。WP的墓碑机制是最严格的, 不允许所用应用后台, 特定后台15分钟内不联网,即可中断完全退出。 可惜微软的服务器经常大姨妈, 安卓系统发展这么多年, 一直在改善, 只能说目前是接近墓碑机制了。

墓碑机制的核心是缓存,重要数据缓存, 不占用后台, 保持信息推送, 安卓需要动手折腾, google任重而道远。安卓6.0引入了墓碑机制。

win10 mobile:应用正在加载(恢复)……

冻结应用,挂起

人们说墓碑机制,只是禁用后台自启。看了一下,Twitter好像挺符合的,关掉了,下次进去白屏1s左右就回到了上次看的地方。

墓碑机制做的最好的是ios,所谓的伪后台,把应用做一个快照,将当前进程记录下来后,杀掉应用。第二次打开时,通过快照进行恢复。

安卓跟ios相比,实现难度在于国内应用为了获取更多的活跃度等目的,不采用GP或者说安卓设计原则,而是自主的采用了很多“黑科技”来保证自己不被杀死、开机自启等。通过一些列手段如悬浮窗、隐藏的view、大量service及守护进程等,来保证自己活跃。简言之,国内没有统一标准来要求他们遵循这套逻辑,而商业目的凌驾于道德之上,所以就造成了现状。

如果没有UIBackgroundTaskIdentifier注册,3~5秒应用就会被iOS自动挂起了。被挂起的应用不能执行代码,好像一种被冻结的状态,这个状态也没有appDelegate的回调方法,但是应用本身仍然驻留在内存中。这个时候iOS对挂起一个应用的管理,就是完全看人品和内存压力了。事实上在现在苹果设备1G内存情况下,被挂起的应用进程被杀掉的情况还是相当常见的,比如,同时开着新浪微博,微信,QQ,经常会出现有些应用需要SSO授权登陆切换到微博微信QQ,然后切回来发现这个应用居然重新打开了。这个就是内存压力大的时候被挂起的应用被自然而然的杀掉了。

作者:Cerulean
链接:https://www.zhihu.com/question/26567240/answer/33318038
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:知乎用户
链接:https://www.zhihu.com/question/35173891/answer/88159842
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Android M新特性Doze and App Standby模式详解,改善续航

https://zhuanlan.zhihu.com/p/20323263

从Android6.0开始,Android提供了两种省电延长电池寿命的功能:Doze(打盹)和App Standby(等待)。

Android6.0 的Doze模式和iOS的处理方式有很大区别。在Doze或者App Standby模式下的程序,并不是像iOS那样完全挂起,而是逐步减少程序的CPU时间以及访问部分耗电资源(比如访问网络)的访问权限。当然,而这些情况是在手机没有接通电源的情况下,一旦接上充电器,这些程序又可以自由活动了。

省电逻辑最简单也最有效的是iOS的设计,推送加类似单任务。


再也不吃内存了 Android6.0将引入墓碑机制
http://cn.ui.vmall.com/thread-4537583-1-1.html

每一次Android有新版本发布时,都会有消息说512MB内存足够了,但每次都成为泡影。从Android2.3到5.1,512MB内存的确能够保证系统流畅。但安装了应用软件之后,一切都变了。
那么安卓系统就无可救药了吗?5月28日凌晨,谷歌正式发布了Android M(6.0开发者预览版)。新一代的Android M亮点多多,其中最大的特色就是“降低内存占用”。
那么Android 6.0救得了低配手机、小内存手机吗?别着急,看完本文之后,相信你一定能找到答案。
一、安卓的内存之痛
每次Android新版本发布前,都会有消息说512MB内存足够了,谷歌官方也说过这样的话。但谷歌说的512MB内存只是针对系统本身来说的,是指没有安装第三方软件的纯净环境下。
以本人曾经使用的天语W619(小黄蜂)为例,这是一款主频只有800MHz的单核手机,3.5英寸480x320的屏幕,512MB内存+512MB存储,原生系统为YunOS2012(基于安卓2.3)。
对于这样一款手机,天语作为三线甚至四线手机厂商,早就放弃了对它的系统升级,但我们却能够轻松在刷机大师的ROM基地上找到针对适配W619的CM11系统(Android4.4)。
小编在刷入之后也感觉非常流畅,没有任何的卡顿甚至没有bug,但安装了五六个软件之后,同时打开3个APP就卡不行了,功能越发强大、体积越发臃肿、内存占用量越来越高的手机APP对老机型来说就如催命符一样,想要流畅运行实在是太难了。
而Android4.4改变的不过是操作系统本身而已,它并不能对厂商的软件进行优化,所以,真正决定系统流畅程度的是第三方软件,尤其是微信、QQ以及浏览器等常用的应用程序,这也是为什么苹果对在Appleappstore上架的APP,在内存占用环节要求极为严格的原因。
二、全新的墓碑机制
因为安卓系统的开放性,很多APP无需上架谷歌商店(国内也上不去)也能发布,这就造成了手机APP质量良莠不齐的现象,因为针对APP开发没有标准、没有限制,所以很多软件都是赚钱怎么来,除了集成大量广告SDK外,还滥用安卓权限。绝大多数的手机APP,除了开机自启动,还经常在后台偷偷运行。
既然没办法在应用商店那一环节卡住这些流氓APP,谷歌决定从系统底层入手。在Android6.0中,谷歌官方还将对内存管理进行进一步的优化。对于非社交类的APP,安卓6.0会启用“墓碑机制”,后台运行时将不再占用内存。升级到安卓6.0后,512MB内存都可以流畅到爆。
与此前的“黄油计划”和“ART模式”相比,Android6.0的墓碑机制才是真正的治本之道。Android6.0将不再过分在意系统本身的流畅度,而是把注意力放在了第三方APP上,因为这有把这些不安分的APP给管好了,才不至于把原本就很流畅的系统给拖慢。
这一举措如果能够顺利实施,安卓用户真的是要感动哭了。Android 6.0将拥有媲美WP与iOS系统的流畅性,你的手机再也不会卡成狗了。小伙伴们,坐等好消息吧!(ROM基地)

作者:知乎用户
链接:https://www.zhihu.com/question/35173891/answer/61634161
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

安卓系统由于不良应用退出以后,仍然会在后台运行或自启,耗流量,耍流氓,无法察觉,不能杀掉,所以卡顿。而实际上原生系统是要求程序退出以后,在后台做最小化占用,并不会完全清除占用,但是也不完全运行(可以设置运行状态),提高了下次运行的响应速度,让内存总是保持满荷状态,提高了资源的利用效率。

不过Google对Android 的音频部分不上心,存在一些不当设计,造成了Android音质的“负优化”。很多国产手机打Hifi 的宣传口号,Hifi 与否先不说,但它们当中的确很多都解决了SRC算法带来问题。这些第三方厂商的做法是:只要输出正确的采样率,不进行SRC算法即可。很多手机厂商,特别是国内厂商,例如vivo、魅族、小米等等厂商都解决了SRC问题,这甚至比Google改进SRC算法的时间更早。同时,XDA论坛也有一些开发者给出了彻底解决SRC的方案。然而,Google官方的原生系统至今仍未彻底解决,Android L发布时就说优化了音质,但直到现在Android音质仍有缺陷。这种音质上的“负优化”,实在不应该出现。

(参见:系统、软件驱动越升越卡?为啥会出现“负优化”)

2014年6月26日,安卓 L/安卓 5.0正式发布,这是Android系统自2008年问世以来变化最大的升级。除了新的用户界面、性能升级和跨平台支持,全面的电池寿命增强及更深入的应用程序集成也令人印象深刻。

Android 5.0 系统使用Material Design 设计风格,开始出现扁平化UI。

IT界一直有个安迪-比尔定律,其意思是:Intel CEO安迪·葛鲁夫提供什么样的硬件性能,微软CEO比尔·盖茨就用更臃肿的系统软件来吃掉这些性能,然后逼迫用户不得不一次又一次的升级软硬件。

(参见:系统升级这个大骗局)

摩尔定律给所有的计算机消费者带来一个希望,如果我今天嫌计算机太贵买不起,那么我等十八个月就可以用一半的价钱来买。要真是这样简单的话,计算机的销售量就上不去了。需要买计算机的人会多等几个月,已经有计算机的人也没有动力更新计算机。其它的 IT 产品也是如此。

安迪-比尔定理 (Andy and Bill’s Law)是对IT产业中软件和硬件升级换代关系的一个概括。原话是 “Andy gives, Bill takes away.(安迪提供什么,比尔拿走什么。)” 这句话的意思是,硬件提高的性能,很快被软件消耗掉了。

是什么动力促使人们不断地更新自己的硬件呢?IT 界把它总结成安迪-比尔定理。虽然用户很是烦恼新的软件把硬件提升所带来的好处几乎全部用光,但是在 IT 领域,各个硬件厂商恰恰是靠软件开发商用光自己提供的硬件资源得以生存。

由于有了足够的硬件资源,软件工程师做事情更讲究自己的工作效率、程序的规范化和可读性等等。另外,由于人工成本的提高,为了节省软件工程师写程序和调程序的时间,编程的语言越来越好用,同时效率却越来越低。比如,今天的 Java 就比 C++ 效率低得多,C++ 又比二十年前的 C 效率低。因此,即使是同样功能的软件,今天的比昨天的占用硬件资源多是一件在所难免的事。

(参见:百度百科)

国内各厂商深度定制UI 的安卓系统,有比原生安卓进步的地方,并且UI体验上更加适合中国人的使用习惯,同时做了大量硬件适配,当然,也加入了自己的“私货”。

vivo 的音频播放技术来自步步高BBG,是全球首家公司把hifi技术融入到手机里的,硬件和软件技术有保障。小米和魅族也已经借鉴了hifi的技术,但是由于手机的HiFi属性得不到市场与用户的认同,魅族、小米之类的一线厂商在尝试之后也只能半途而废。人们的关注焦点还是被手机的外观设计、性能实力所吸引,至于手机的HiFI属性则往往都自动将其忽略。但是vivo 在每一代中高端产品上使用优质的解码芯片,最早是在vivo X1中首次加入了HiFi级的音频芯片,成为了全球首款高品质音质智能手机。要想让用户拥有好的HiFi体验,除了对手机硬件与耳机有较高的要求之外,同时还需要在软件方面满足用户的需求,vivo 与虾米音乐、QQ音乐等音乐软件进行了合作,因此vivo手机用户拥有海量的正版无损音乐曲库,从音源到前端再到耳机都保证了高品质的HiFi属性。

vivo 宣传得很多的还有它的智慧引擎,它是一个进程和内存管理程序,是系统级的程序,让安卓手机从此不再卡顿。而运行久了就卡,这一直是安卓机的一个痛点。vivo宣称在国内除了苹果,vivo 的运行最流畅。

对于原生安卓来说,智慧引擎可能是一个多余的功能,是商业炒作。三星有类似功能的智能管理器,其它大厂都有自己类似的“黑科技”。

“资源调度方案”包括智能调节优先级,将一些常用应用(如社交软件)优先等级调高,降低被回收概率;动态回收,针对缓存等进行闲时动态回收;CPU智能场景识别,根据系统运行状态,智能调配资源,把CPU更多分配给用户的常用应用。让CPU在需要高性能时,快速响应;在负载减小时,快速恢复。均衡性能与功耗。

黑科技“智慧引擎”

vivo官方对于“智慧引擎”的解释是“通过强大的智慧引擎,系统可以进行自我检测、自我感知、实时调整和高度调整,指定更高效的CPU和内存等资源调度方案,让用户的操作体验持续无比畅快”,包括了以下几个方面:

一、智能加载:将常用且重要的应用在内存中智能加载,让你越用越畅快;

二、智能调节优先级:将一些常用应用(如微信、QQ)优先等级调高,降低被回收概率;

三、动态回收:针对使用中的内存和缓存碎片,闲时动态回收,忘掉卡顿,持续流畅;

四、自然畅快:人机结合的自然畅快是符合人生理反应的自然体验。通过优化手机桌面响应时间,并在感知到手机滑屏时,GPU最优匹配,让屏幕滑动和手指完美契合;

五、CPU智能场景识别:根据系统运行状态,智能调配资源,把CPU更多分配给用户的常用应用。让CPU在需要高性能时,快速响应;在负载减小时,快速恢复。均衡性能与功耗。

从中我们可以得到两个信息,一是智能引擎是一种全自动的人机交互方式,不需要用户主动操作或设置;二是智慧引擎可以使得手机在流畅、节能、省电、效率、安全、功耗等等各方面都更加出色。这本来就是安卓原生的功能,内核的基本功能。

3.0智慧引擎依靠通过自我检测和自我感知,智能制定对CPU内存等资源的调度方案和对第三方的监管机制,为每一台vivo手机的流畅稳定默默贡献。优化运行内存,自动关闭后台高耗电应用,相当于后台耗电管理。按照官方的说法,应该是记录用户对各种应用的使用次数和习惯,然后这些应用启动会更迅速,就相当于有优先权。后台耗电自动终止程序,可以选择的。

对于RAM的管理机制,难道Linux 和原生安卓都是吃干饭的,还要请你vivo来出手?别按windows思维来管理安卓资源就行了,改变安卓原生机制,结果不伦不类,得不偿失。

vivo 所宣传的智慧引擎技术与原生安卓的管理机制很相似。那么vivo的智慧引擎与原生安卓的技术同时运行有没有冲突?并且智慧引擎本身还要占用资源的,画蛇添足,智慧引擎是不是多余的功能?为了达到与众不同的宣传效果,以及为了避免系统同时运行相同功能的两个程序发生冲突,vivo 会不会干脆把原生安卓的管理技术直接砍了?

*************

Android 4.4 中谷歌为开发者提供了两种编译模式,一种是默认的Dalvik模式,而另外一种则是ART模式。
2014年谷歌正在对Android系统进行调整,简单点说就是ART已经取代Dalvik成为默认选项。一直以来,Dalvik虚拟机背负着Android应用卡顿的罪名,原因则是应用在运行的过程中,虚拟机Dalvik通过一个叫JIT(Just-in-time)的解释器动态的进行编译并执行,这一过程也拖慢了运行效率。
与之形成鲜明对比的ART模式,则是在用户安装应用时就进行预编译操作,将原本在程序运行中时的编译动作提前到应用安装时。在省去解释代码这一过程之后,应用的运行效率会更高。
此外,有开发者往Android开源项目中提交代码时发现,ART已经取代Dalvik成为默认选项,不过Dalvik并没有被放弃,这无疑是个不错的消息,对于在2014年到来的大改版Android L来说,它的系统执行效率会更高。
谷歌公布Android L其界面相比4.x的版本来说,会有更大的变化,同时该系统还会加强平板的用户体验。
Android 5.0系统即彻底从Dalvik转换到ART,那样iOS开发人员和其用户所引以为傲的流畅体验将不再是一个值得炫耀的东西。
Android 6.0引入新的Doze模式,可以大幅度提升续航(号称可以省电30%),它的原理是在应用长时间没有使用的时候,自动休眠。在设置菜单中,也可以设置单独针对每一个应用进行续航的优化。
多任务管理依然采用卡片式,集成搜索栏,依然只可以单独关闭应用,不能一键清空(这点执着和iOS倒是挺一致的)。
电量管理与内存管理

Google 终于把大刀挥向了耗电大户和吃内存大户。继 Android 5.0 新增节能模式之后,Android 6.0 加强了电量管理方面的管理。除此之外,对于吃内存大户,你也能够通过新增的工具轻松把它们揪出来。

新的电量管理法名叫 Doze,它的作用是在应用不活动的前提下将其冻结,从而达到节省电量的目的。同时,它也允许你将重要应用一直放在后台运行。

这种改进的效果非常明显:在不插 SIM 卡、只连接 Wi-Fi 并翻墙的同等情况下,我的 Nexus 5 在 Android 5.0 中至多撑 3 天;而在 Android 6.0 下的待机时间则大大增加,甚至轻松达到惊人的半个月。(请注意,以上数值为待机时间。)

内存管理则要显得简单得多。它会计算一段时间内平均内存使用量,并给你列表出来哪些应用在大量消耗内存。这样,你可以轻松找到吃内存大户而无需求助其他第三方辅助软件了。

ROM和RAM革命性的突破是亮点

一直以来,安卓4.4及其以前的分区方案被用户饱受诟病,于是从安卓5.0开始谷歌采取了ROM的合并分区方案:把手机ROM的data分区(手机内置存储)和手机ROM的内置SD卡(手机SD卡储存)分区完美合并在一起,彻底解决了ROM到64G的手机却仍然装不了多少程序的烦恼。

说完了手机ROM的完全合并,再说说RAM,就是运行内存:

而在Android 6.0中,谷歌官方还将对运行内存的管理进行进一步的优化,对于非社交类的APP,安卓6.0会启用“墓碑机制”,禁止后台启动,即使一些流氓软件强制让他后台运行,Android 6.0的分配机制也将不会分配给这些软件任何的运行内存,而怎样分辨社交和非社交软件,用户可以自行设置,所以升级到安卓6.0后,512M的运行内存都可以流畅到爆。

更好的电池续航

在Android 5.0当中,谷歌加入了的“Project Volta”项目,尽可能的保证Android手机和平板的续航时间,Nexus 5甚至延长了36%以上。Android 6.0将继续保持对续航的优化,以便提供更高的电池利用率。

让Android自动管理电量、性能其实就够了。

新增夜间模式或黑暗主题

从Android 5.0开始,谷歌在原生系统当中引入了很多白色的界面原色,很多用户认为白色的界面在晚上非常刺眼。而在Android 6.0中,谷歌将增加一个夜间模式,方便夜间玩手机或喜欢看电子书的用户,还能起到一定的节电效果。

谷歌安卓要做的,正是微软windows 10正在做的。
苹果笑了 安卓系统6.0占有率才为31.2%
http://mobile.yesky.com/317/131622817.shtml

谷歌官方的最新数据显示,目前安装率最高的版本依然是“棒棒糖”,包括Android 5.0、5.1,合计达到32%;其次是“棉花糖”,即Android 6.0,为31.2%,二者共计63.2%。
发布了将近半年的“牛轧糖”(Android 7.0、7.1),占有率只有可怜的4.9%,我们可理解为除了那些被程序员更新了的工程机,消费者当中应该没有几次吃上牛轧糖。另外,上古遗留物 “姜饼”( Android 2.3.3、2.3.7)和“冰激凌三明治”( Android 4.0.3、4.0.4)还依然还“键在”,二者均还有0.9%的用户。
安卓阵营各种正牌杂牌混杂,机型复杂繁多,很难照顾到每一个型号,再加上国产安卓阵营各种天马行空的定制ROM,新版本到来,程序员优先在新机上适配,旧机往往推后很晚或者直接放弃。
都说Android 6.0顺得飞起,Android 7.0已经比肩苹果iOS10,然而我们普通用户死活用不上,这找谁说理去呢!

谷歌I/O 2016:安卓操作系统前景不容乐观
http://www.ithome.com/html/android/227385.htm
相比于谷歌在谷歌网络开发年会Google I/O 2015上对Andriod系统的乐观,目前Andriod系统在高端智能手机中的市场份额进一步降低,同时Andriod平板电脑也未对消费者产生足够多的吸引力,在视频游戏领域也未争取到更多的市场主动权。在过去一年中,谷歌Andriod软件部署速度不断减缓,相比于上一年度反而落后了20%。高端手机是Andriod系统的一大痛点。

*********

移动OS,市场占有率和应用数量,安卓世界第一。因为安卓开放,最活跃,所以新功能最丰富,有些新功能不一定是原生的,是第三方的,比如手机厂家,让安卓的新功能总是走在最前面。可悲的是,安卓的RAM内存管理方式不同于wp和ios,让习惯windows 的普通用户不理解。开放和自由,可以各自为政,也让安卓碎片化严重,流氓软件最多,资源被过度应用,体验不足。

比应用质量和硬件品控、设计、控制、高端化和利润,以及反人类,苹果第一。

比生产力,高效,省心,与windows 连接的便利性,微软第一,但是磁贴UI让许多人觉得另类,内核更改频繁,抛弃开发者和用户,造成应用质量也是最差。

**************

安卓正式超越微软Windows,成为用户最常用操作系统
http://www.ithome.com/html/android/302850.htm

而现在,StatCounter最新的调研结果出炉,2017年3月,在在该机构跟踪的网站中,Android用户的访问量占37.93%,Windows用户的访问量占37.91%。两者之间的差距不大,但意义不同。
这里代表的意义是移动端设备正在超过桌面端,越来越成为用户连接互联网的主要平台,“移动化”也是近年来最热门的趋势之一。当然,这一数据反映的仅是用户的使用频率(最常用),并未直接反映安卓和Windows两大系统在用户基数方面的具体情况。

评论:确实没有可比性,准确来讲,两者根本没有办法相互替代。自行车和汽车的例子一点没有错。自行车替代不了汽车,但是自行车也是无可替代。怎么比?不是说安卓不如windows,而是两者根本就不能算同一个领域。所以拿来对比,毫无意义!

腿超过所有的的交通工具,成为人类最常用的交通工具。

自行车超过汽车成为最常用交通工具。****************

本屌在刷入安卓4.4之后也感觉非常流畅,没有任何的卡顿甚至没有bug,但安装了五六个软件之后,同时打开3个APP就卡不行了,功能越发强大、体积越发臃肿、内存占用量越来越高的手机APP对老机型来说就如催命符一样,想要流畅运行实在是太难了。

 而Android4.4改变的不过是操作系统本身而已,它并不能对厂商的软件进行优化,所以,真正决定系统流畅程度的是第三方软件,尤其是微信、QQ以及浏览器等常用的应用程序,这也是为什么苹果对在store上架的APP,在内存占用环节要求极为严格的原因。

新一代的Android M亮点多多,其中最大的特色就是“降低内存占用”。

因为安卓系统的开放性,很多APP无需上架谷歌商店(国内也上不去)也能发布,这就造成了手机APP质量良莠不齐的现象,因为针对APP开发没有标准、没有限制,所以很多软件都是赚钱怎么来,除了集成大量广告SDK外,还滥用安卓权限。绝大多数的手机APP,除了开机自启动,还经常在后台偷偷运行。

既然没办法在应用商店那一环节卡住这些流氓APP,谷歌决定从系统底层入手。在Android6.0中,谷歌官方还将对内存管理进行进一步的优化。对于非社交类的APP,安卓6.0会启用“墓碑机制”,后台运行时将不再占用内存。升级到安卓6.0后,512MB内存都可以流畅到爆。

与此前的“黄油计划”和“ART模式”相比,Android6.0的墓碑机制才是真正的治本之道。Android6.0将不再过分在意系统本身的流畅度,而是把注意力放在了第三方APP上,因为这有把这些不安分的APP给管好了,才不至于把原本就很流畅的系统给拖慢。

 这一举措如果能够顺利实施,安卓用户真的是要感动哭了。Android 6.0将拥有媲美WP与iOS系统的流畅性,你的手机再也不会卡成狗了。

为什么苹果和微软就能做到墓碑后台呢?因为从源头——应用商店,人家就牢牢握在手里,不听话的应用不让上架,上架的应用只能使用系统API推送,技术上在理想情况下Android也可以这样,但中国市场Google鞭长莫及,在Google放任不管的情况下,应用只能各自开后台推送,在这时候你提墓碑后台,在瞅瞅这乱象,就会明白为什么现实上不可能实现安卓的墓碑了。

 百度了下什么是墓碑机制,定义如下:

墓碑机制是微软Windows Phone 7手机操作系统中的一个程序运行规则,简单的说就是手机上一个任务被迫中断时(如有电话打入),系统记录下当前应用程序的状态后,(像把事件记录在墓碑上一样),然后中止程序。当需要恢复时,根据“墓碑”上的内容,将程序恢复到中断之前的状态。这样的一种机制就是“墓碑机制”。

后台机制,杀后台。伪后台,真后台。缓存管理。

是不是看起来云里雾里的,其实就是两个字:缓存。听起来是不是很耳熟?对,墓碑机制用的最好的是IOS,虽然是微软搞出来的,目前安卓阵营还真没有。有人肯定不服气, 说android M里不是有类似功能吗?可惜然并卵,  墓碑机制的核心是缓存, 表现方式是推送至系统前台, 目的是省电、 省资源。WP的墓碑机制是最严格的,  不允许所用应用后台, 特定后台15分钟类不联网, 即可中断完全退出, 可惜微软的服务器经常大姨妈, 安卓系统发展这么多年 一直再改善, 只能说目前是接近墓碑机制了。

 Android 6.0墓碑机制解密:真后台还是伪后台?

众所周知,Android系统虽然是一个开源的、可自由定制的移动操作系统,但是绝对自由也意味着更加的混乱。Android系统的各种卡顿,耗电现象,第三方应用不加节制的耗费系统资源成了一大弊病。

对此,谷歌在2012年的I/O大会上发布了Android 4.1,并推出了黄油计划,主要是通过GPU绘图来提高系统的流畅度。不过之后的Android虽然有所改善,但相比苹果iOS和微软WP流畅程度仍望尘莫及。2013年,谷歌又在Android 4.4系统上加入ART预编译技术,但是实际效果仍有限。

什么是“墓碑机制”?

在今年发布的Android M(6.0)系统上,谷歌加入了Doze省电模式。很多不明就里的朋友们将其当做Android的“墓碑机制”,也就是WP、iOS系统上的伪后台。其实Android M的Doze模式和传统意义上的“墓碑机制”原理并不相同。

要想弄清楚Android M的Doze模式和“墓碑机制”有什么不同,我们首先需要了解一下什么是“墓碑机制”。“墓碑机制”通俗的讲就是伪多任务,当一个应用被切换到后台时,系统就会自动杀死,并把该应用切换后台时的状态自动记录,当再切换回来时呈现的是杀死应用时的瞬间状态,系统会把应用还原成被杀死前的状态,就好像它从来没被杀死过一样,虽然应用重新读取速度比重新启动速度快不了多少,但是可以通过系统动画进行视觉弥补,让大家察觉不到。而Android应用即便是切换到后台也会照样运行联网,系统不会有限制。

应用重启过程,就是WP里的“正在加载…… ”过程。

现在谷歌也意识到只是通过对系统本身的优化并不能从根本上解决Android卡顿耗电的问题,因为不安装应用还好,只要已安装第三方应用Android手机还是照样卡顿。所以Android M的Doze模式就是专门限制第三方应用而生的。

Doze和“墓碑机制”不同之处

现在我们来谈Android M的Doze模式和“墓碑机制”的不同之处,Doze模式可以称作“活埋机制”,Android M对于一些非社交(或者说是黑名单)的APP采用无视的方式,屏蔽网络,唤醒和定时任务也被忽略或推迟。当然,这些APP可以继续在后台运行,但是啥也干不了。而且Doze模式启动条件也比较苛刻,首先需要一个小时的等待期,在屏幕关闭半小时后开始进行『大幅度运动监测』,接下来半小时内无大幅度运动才会进入Doze模式。所以Android M的Doze模式并不是墓碑机制,不会强制杀死应用,而是加强了后台唤醒的管制,但时白天并不会起太大的作用,在长时间待机状态的晚上才是Doze模式发挥作用的时候。

杀死之后如何推送消息

当然,对于一些社交APP,Doze模式并不合适。针对这种情况,谷歌推出了为此一些GCM云服务API接口,社交APP消息可以通过谷歌GCM服务进行云推送,但是有可能会延迟现象,而且国内由于你知道的原因,更是处于不可用状态。国内的小米推出了MiPush云推送服务,仅仅覆盖了小米自家的手机,效果也并不是太好。

Doze模式不管是应用场景还是应用机制都算不上完美,相信这只是谷歌的一次实验,后期会有更好的解决办法,只不过什么时候国内用户能够用上还是未知数。

http://www.ithome.com/html/android/309395.htm

据说,Android的“垃圾回收机制”需要额外的内存进行垃圾回收。当一个安卓应用结束运行之后,该机制需要容量比它更大的内存,来回收该用占去的内存。另外,手机程序安装越来越多,手机APP功能越来越强大,对于ROM和RAM的需求也越来越强大,久而久之手机开始卡顿。

另外,安卓是开放的系统,频繁的安装与卸载必然会在手机内积累大量残留,这些手机底层的残留物并不会因为你把APP卸载了而自动删除,一般用户也意识不到它的存在,久而久之越积越多。手机用久了,视频、微博、QQ这类APP必然会产生垃圾,使用最频繁,所以垃圾产生也多。如果不及时清理,产生大量垃圾也是正常现象。

此外,应用自启动已经成了安卓手机普遍的现象。随着不断的添加APP,手机里的自启应用会越来越多,大量应用偷偷在后台运行并且占用CPU、内存等硬件资源,会严重拖慢手机的运行效率,达到极限时甚至会引发死机的现象。另外手机程序自启动导致耗电严重,让手机的续航能力差。

2017年5月安卓8.0预览版

提效率,加速度!一文看懂Android O(安卓8.0)所有新功能

http://www.ithome.com/html/android/309497.htm

http://www.ithome.com/html/android/309386.htm

对耗电、后台机制又进一步发展了。

具体而言,在相同的硬件设备上,Android O的应用启动速度比Android N提升两倍;为控制并降低后台耗电,Android O还整合了智能限制的后台机制。

网友说,按谷歌的规则玩,用户开心,谷歌放心,开发者操心,厂商担心。不按谷歌的规则玩,用户伤心,谷歌操心,开发者厂商一起哈哈。iOS流畅是因为全在苹果的规则内玩的,硬件、系统、app全程关注,还不流畅不是打自己的脸吗?

系统越来越流畅,但是国内应用越来越卡。中国大陆的安卓生态有着自己的丛林法则。

Android≠安卓,尴尬,谷歌称20亿Android活跃量未统计中国大陆设备

http://www.ithome.com/html/android/309563.htm

中国Android应用开发者发起Android绿色应用公约

http://www.ithome.com/html/android/309176.htm

近来国内良心企业建立了一个公约,规范应用的开发行为。

众所周知,中国的Android应用有两大现象:索要过多的权限,比如一个扫雷游戏都想要能记录音频和视频的访问权限;后台活跃,即使在应用彻底关闭的情况下它也会主动唤醒自己,很多时候同一家公司的应用还会互相唤醒。

长期占据内存、消耗电量,让手机越来越卡的后台行为,这是不少人对大部分国产Android应用吐槽不断的原因。当然,其它国家的Android应用也存在类似的问题,但几乎没有一个能像中国市场这么普遍了。现在,中国的一些Android应用开发者试图改变这一现状,因此发起了 Android绿色应用公约,目的是希望改善Android的用户体验,让Android的名声更好。

这是一项旨在推动Android生态中的优秀应用共同维护一个更加良性的『设备体验』而发起的开放公约。

此公约的内容修订和扩充面向整个Android开发社区,采取开放接纳、充分讨论、积极修订的原则。如果对规约有任何的疑问(包括实施中的困难)和建议,可通过此公约的 GitHub issue tracker 提交。

Google Play应用市场(以下简称Google Play)是Android生态中全球最大的应用分发渠道,在除中国大陆地区外发售的绝大部分Android手机中是预装的唯一应用市场。由于众所周知的因素,Google Play在国内的Android应用分发渠道中并未获得主导地位,但这并不妨碍应用开发者应将应用上架Google Play的重要性。


  评论这张
 
阅读(67)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017