手机的RAM和ROM
RAM是由英文Random Access Memory的首字母构成的,意为随机存储器,即在正常工作状态下可以往存储器中随时读写数据。根据存储单元工作原理的不同,RAM又可分为静态存储器(SRAM)和动态存储器(DRAM)。RAM的特点:可读可写;给存储器断电后,里面存储的数据会丢失。我们经常说的内存,比如计算机的内存,手机的内存,包括CPU里用的高速缓存,都属于RAM这类存储器。
ROM是由英文Read only Memory的首字母构成的,意为只读存储器。顾名思义,就是这样的存储器只能读,不能像RAM一样可以随时读和写。它只允许在生产出来之后有一次写的机会,数据一旦写入则不可更改。它另外一个特点是存储器掉电后里面的数据不丢失,可以存放成百上千年。此类存储器多用来存放固件,比如计算机启动的引导程序,手机、MP3、MP4、数码相机等一些电子产品的相应的程序代码。
综上所述,RAM指的是手机的内存,ROM指的是存放手机固件代码的存储器,比如手机的 *** 作系统、一些应用程序如游戏等。
手机ROM组成
一个完整的ROM 根目录会有以下几个文件夹及文件: data、 META-IN、 system、 bootimg 四个文件夹
(data)是用户安装应用程序所在目录 ,(META-IN)是系统相关信息所在目录,一般定制一个ROM修改系统版本信息都在这里面。(system)为系统所在目录,相当于PC系统的Windows文件夹, (bootimg)是一个镜像文件,就是所谓的内核核心,一般移植ROM的时候会用到。
而16G肯定够用了,nexus S性价比可以说现在最高的了[PConline 杂谈]安卓是Google发起的,但现在安卓的一些行径,连Google也看不下去了。近日,安卓发起了一项针对安卓的调查——Google认为很多OEM安卓机厂商,其推行的安卓系统存在严重的杀后台问题,App难以在后台存活。
Google最近和一些安卓厂商不对付了
Google认为,现今很多OEM的安卓系统都违背了Google的政策,令App无法在后台持续运行。虽然大多数安卓应用并不需要在后台保留进程,但也有部分类别的确有此类需求,例如 健康 记录App,需要持续记录数据。然而,部分OEM安卓系统却无法满足此类需求,安卓开源项目AOSP的错误跟踪器就曾经揭露出某些OEM厂商滥用安卓机制,禁止第三方应用在后台运行,甚至还杀死了AccessibilityService这个系统级别的无障碍服务进程。
Google实际上为安卓系统制定了杀后台的规则,但OEM厂商们却在这方面并不透明,开发者和用户无法知道OEM安卓到底会杀掉怎么样的App后台。有时候,OEM安卓厂商会将某些App加入白名单,例如部分社交和通讯软件,以确保消息的及时推送。但这些机制对于用户和开发者来说,相当于黑箱,人们无法判断到底哪个App能在后台运行、哪个不能,最终的体验并不如人意。
安卓基于Linux系统,本身拥有完善的多后台机制,在诞生之初其桌面级的“真后台”是玩家津津乐道的卖点。近年来安卓机的内存越来越大,甚至已经堆到了16G的容量,和桌面PC相比也不遑多让。但为何安卓生态中,杀后台的现象反而变严重了?这就来简单聊聊这个问题吧。
原生安卓系统支持App后台保留进程,但传统上也有一套循序渐进的后台退出机制。在传统上,安卓系统会为App进程分配不同的状态,例如Foreground_App(前台应用)、Visiable_App(可见应用)、Secondary_App(二级应用)、Hidden_App(隐藏应用)、Content_Provider(内容提供器)、Empty_App(空应用)等状态。当内存不足的时候,系统会优先终止Empty_App进程和服务,将内存释放出去;内存再次吃紧,就开始对Content_Provider动手脚了,以此类推。
安卓App不同的状态,系统会据此判断杀进程的优先级
但是,并不是每个App都老老实实为进程注册合理的状态的。很多安卓App会通过一些手段,来修改自己进程的属性,来长期驻留后台。
例如,一些流氓App将startForeground来把自己注册成为前台应用,让自己的后台成为最高优先级,永远不会被系统干掉;又例如,有流氓App会利用安卓的悬浮窗机制,设置一个1像素大小的透明悬浮窗,让App始终处于激活状态,避免后台被杀;又例如,流氓App们抱团取暖,后台进程利用安卓系统的周期性任务进行链式唤醒,开启一个App等于唤醒N个App的后台……
流氓App驻留后台的经典方法——利用广播接收器触发后台自启动
App们的这些行径,消耗了额外的资源,对续航和流畅的负面影响肉眼可见。
为此,官方的安卓系统也作出了一些应对。例如针对App乱注册startForeground状态,安卓70之后会在通知栏强制显示“XX正在后台运行”;又例如安卓收紧了悬浮窗权限,使用悬浮窗必须开启相应开关;而安卓11则很大程度上了App之间的链式唤醒等等。
安卓70对很多后台运行的App都在通知栏有公示,后来这些App不得不改变后台驻留的方法
但道高一尺魔高一丈,安卓系统的很多限制后台机制,需要App使用较高版本的TargetAPI才能生效,而大量App仍使用老旧的开发规范,但用户却不可能抛弃其中的很多App。因此,App强行驻留后台的行径,对于用户的负面影响是实打实的,既然Google官方安卓无法做到,那就只能由第三方安卓ROM来动手了——如果哪个牌子的安卓不做,就会在用户中落下“又卡又热又耗电”的坏口碑。
因此,OEM安卓们杀后台,一个比一个狠。有其是在国内,一些安卓ROM甚至默认定时杀后台,即使RAM资源充足,绝大部分App也无法保留后台进程。安卓ROM激进杀后台的风气,就此产生。
安卓ROM激进杀后台是“果”,而App以各种行径强行驻留后台则是“因”。而这一切的“根”又是什么?恐怕和安卓的生态环境有关。
和苹果不同,安卓最初并没有提供App统一推送机制,这意味着每个App如果需要接受后台消息,那就需要自行驻留进程,以随时接收消息推送。不过这些年Google也对此作了改进,引入了GCM/FCM机制,App可以调用Google服务框架GMS,通过Google的服务器实现统一的消息转发,App的消息推送可以由系统接管,整个过程App都无需保留后台,体验类似iOS。
安卓上的FCM机制,类似于iOS的统一消息推送,但前提是系统和App接入Google服务
然而,这一套机制并非是强制性的,如果App不接入GMS,甚至不上架Google Play,那么完全可以无视这一切。而在以国内为典型的应用环境下,GMS实际上并不可用,App自行驻留进程、接受消息推送就成为了必选项。
因此,国内的安卓App使用了尤其多的手段,在安卓系统中驻留进程,这实际上很大程度是不得已而为之,当然也有商业上的考虑。而针对国内App种种驻留后台的手段,国内的安卓ROM为了保证续航和流畅,又不得不采取了更多的一刀切杀后台手段,这就造成了现今的情况。
安卓ROM整治了App后台驻留,带来了更好的续航和性能表现。然而对于用户而言,这并不是体验的全部。很多用户就遇到了这样的情况——使用某个App,例如音乐App听歌,切到后台一会儿,音乐就停了,因为系统把音乐App进程给杀了。但用户可不知道这是系统做的,只会认为这是音乐App的毛病。一时间,这音乐App就荣获差评。
Google在Play商店中观察到了不少这样的差评,而这显然不是开发者的错——在App驻留后台越来越卷的风气下,老老实实按照规范开发的App,反而后台更容易被系统强行中断,反映在用户实际体验上就是该App在后台好端端就没了,用户觉得这App肯定有Bug。
为了呼吁系统不要乱杀App后台,开发者们甚至还专门做了一个“求别杀我的App”的App
开发者无端背锅,而这问题显然又不是开发者能解决的。Google不得已亲自插手,来整治安卓ROM乱杀后台的现象。
目前Google正邀请第三方应用开发者提供反馈,想知道哪些手机品牌机型杀后台严重,以便进行更加深入的调查。
由于众所周知的原因,Google并不在国内展开账号相关的服务,国内的安卓生态是和Google脱节的。因此,对于Google的相关整治,应该对国内的安卓产品影响不大。
但是,也有不少国内安卓厂商开展海外业务,在海外市场,Google的话语权举足轻重。Google有可能对安卓厂商施加压力,以让安卓厂商改变系统的杀后台策略。在这样的背景下,国内外的机型分别采用不同的杀后台策略,就显得很有必要了。在用于国外机型的国际版ROM中,安卓厂商应该重视Google的意见,对杀后台策略进行一定程度的修改。
不过我们也要意识到,安卓ROM激进杀后台造成的负面体验,在国内也是存在的。但目前国内的安卓生态迫使安卓厂商出此下策,要如何改变现状?
统一推送联盟有望从根源上解决系统杀后台和App需要后台保持推送服务的矛盾
这两年,工信部联合了主流安卓厂商,共同推进统一推送联盟。App接入了相关体系后,即可实现系统级推送,无需驻留后台也可以接收消息。统一推送服务需要安卓ROM和App同时支持,好消息是,目前统一推送服务已经覆盖了华为、OPPO、vivo、小米等多家国内品牌,相关标准与成果也将纳入中国信通院与中国互联网协会共建的“中国移动基础服务平台”(China Mobile Service,CMS)的相关体系之中,并在2021年中国互联网大会上正式发布。希望统一推送联盟能一改国内App驻留后台的风气,让安卓ROM没有激进杀后台的理由吧。
总的来说,安卓ROM之所以如此激进杀后台,是和安卓App的行径息息相关的,而这一切的根源又是缺乏统一推送服务的安卓生态。随着国外Google对安卓掌控力的加强,以及国内统一推送服务的普及,情况有望得到改观,希望安卓ROM和App们未来能有更好的用户体验吧。和打开的网页类型,本身安装的插件数量、大小很有关系,总体来说占得不是很多,而且谷歌主打的还是网页打开速度,这和内存占用、CPU使用率是相悖的,所以有时候会占用资源多一点,有这个性能已经不错了。
可以看看网上的资源占用对比文章。大概就有个数了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)