朋友A:我的手机怎么
**才用两年**
就这么**卡**
了
朋友B:你用的Android手机吧,Android手机就这样,卡得很,下次换苹果手机吧
朋友A:Android 手机太废物了
信任这种对话,或者这类“Android手机就卡”在大部分人的日常生活中都曾听闻,尤其是在和iOS手机做比较时,“Android手机运用年限长了后就会卡,不像苹果手机” 是绝大多数人对Android手机的固有形象。
都说一款手机的硬件水平决议了你会不会买它,而一款手机的软件体系决议了你第2次还会不会想买它。软件体系很大程度上决议了手机厂商能不能留住客户。
疏忽主观形象上对Android体系的喜欢与偏见,Android体系真的便是所谓的废物体系么?都2024年龙年了,Android手机仍是越用越卡么?
Android体系的开展史
2003年-2005年,万物伊始
2003年10月,安迪鲁宾、Rich Miner、Nick Sears和Chris White创立Android公司,并组建Android团队。2005年8月,Google低沉收买了树立仅22个月的高科技企业Android及其团队,安迪鲁宾成为Google公司工程部副总裁,持续负责Android项目。
2007年-2010年,初见雏形
2007年11月5日,Google公司正式向外界展示了这款名为Android的操作体系,并且在这天Google宣告树立一个全球性的联盟安排,该安排由34家手机制造商、软件开发商、电信运营商以及芯片制造商一起组成,并与84家硬件制造商、软件开发商及电信运营商组成开放手持设备联盟(Open Handset Alliance)来一起研制改善Android体系。这一联盟将支撑Google发布的手机操作体系以及运用软件,Google以Apache免费开源许可证的授权方法,发布了Android的源代码。
2008年9月22日,T-Mobile在纽约正式发布榜首款android手机——T-Mobile G1。这一里程碑式的事件,也标志着Android正式进入了群众视界。
2011年-2014年,崭露头角
从2008年9月22日,T-Mobile在纽约正式发布榜首款android手机——T-Mobile G1开端,Android体系不断取得各个手机厂商的青睐。Android现已超出了手机操作体系的范畴,Android体系现已广泛运用于TV,手表及各种可穿戴设备。2011年榜首季度,Android在全球的市场份额初次超过塞班体系,跃居全球榜首。
2015年-至今,方兴未艾
自2016年开端,Android体系进入了稳步开展阶段,Android开发团队保持着一年一个版别的节奏,贴合用户需求和年代开展布景,不断进行功用优化和功用增强,例如:
- Android 7.0 引进多窗口形式、告诉摘要等功用
- Android 8.0 引进布景约束、告诉分类等功用
- Android 11.0 对折叠屏设备进行了支撑
- …
一起开端注重用户的隐私维护,引进了动态运行时权限
及更多的隐私操控选项,答运用户更好地操控运用的权限,为自身的信息安全保驾护航。
为什么Android体系更简略卡顿?
Androd体系的碎片化问题
说到Android手机卡顿的问题,就不得不提Android体系碎片化这个首恶。
何谓Android体系碎片化?
Android体系自诞生之日起,左手开源、右手免费,迅速进入群众视界占领市场,成为全球市场份额排名榜首的手机体系,收成了不计其数的拥趸。但是,也正是因为其免费开源的特性,导致Android设备在硬件、软件功用方面存在巨大的差异,这些差异体现在以下几个方面:
- 版别的差异性:Android体系发布了多个版别,而不同的设备或许运行着不同的Android版别。这意味着开发者需求考虑不同版别之间的差异,以确保运用程序在各种版别的Android体系上正常运行。
- 设备的差异性:Android体系运行在各种不同的设备上,包括智能手机、平板电脑、智能手表、智能电视等。每个设备具有不同的屏幕尺寸、处理器、内存和其他硬件标准,这对开发者来说增加了适配和优化的难度。
- 用户界面的差异性:Android体系答应设备制造商自定义用户界面,这导致不同设备上的用户界面或许存在差异。开发者需求确保他们的运用程序在各种不同的用户界面上保持一致的外观和功用。
咱们将这种因为体系版别、设备及用户界面不同带来的不同体现称之为Android体系的碎片化体现(是不是很形象)。Android体系的碎片化是Android生态体系的特色之一,也是Android体系开展中的一大挑战。为了解决这一问题,谷歌和手机厂商也一直在不断尽力,推出更多的统一标准和标准,以提高Android体系的流通性和用户体会。
群魔乱舞的推送体系
咱们都知道苹果的推送体系:Apple Push Notification Service(苹果推送告诉服务)
,简称APNS
。这是一种云端推送技能,用于向iOS、macOS以及watchOS上向用户发送推送告诉和音讯。苹果设备用户运用运用接纳推送音讯彻底依靠该服务。
举个比如,一条微信音讯经由APNS推送到你的iPhone上大概是这么个流程:
从上图能够看到,微信音讯并不是直接由微信服务器发送到你的微信app上的,需凭借APNS统一办理并转发。这么做的目的,便是为了在App离线场景
(App被彻底关闭)下,运用依旧能够正常收取到推送音讯。这也是大多数人抱怨的iOS微信音讯接纳由推迟的原因。
同样,出于推送音讯的安全性、安稳性及功用考虑,业界干流的推送计划也基本都是如此流程。
点评推送服务的标准往往采用以下4点:
- Save安全:保障推送音讯的安全
- Stable安稳:推送机制足够安稳
- Save节省:节省服务器及客户端负载
- Slim体积小:推送服务自身的体积要尽量小
从以上4个角度来看,苹果的APNS无疑是一套合格的推送计划(除了偶然抽风无法及时收到推送音讯),事实上关于苹果设备,开发者也只能挑选这套计划,别无其它挑选(感叹苹果关于自家生态强大的把控力)。
那Android体系呢?
事实上,作为Android体系的持有者,Google也有一套自己的音讯推送机制,叫 Firebase Cloud Messaging(Firebase云音讯)
,简称FCM
。毫无疑问,这同样也是一套可靠的推送计划。抱负状况下,Android开发者只需像苹果开发者接入APNS那样接入FCM,就能够完成安稳的音讯推送。但是事实是严酷的…
受限于种种原因,谷歌服务进入不了国内市场,作为依靠谷歌服务的FCM自然也在国内运用不了。但是音讯推送关于用户来说,又是一个高频且肥肠重要‼️的机制。试想,如果一款手机无法正常接受微信音讯,你也必定不会购买吧?
怎么办呢?Android手机该卖仍是要卖,所以像小米、vivo、华为、oppo等一众国内的手机厂商纷纷自研了音讯推送服务用以代替FCM
,像小米的小米推送、华为的华为推送等等等等…除了厂商的推送服务,还有一些第三方也供给推送服务,像腾讯的信鸽、阿里的友盟、个推、极光推送等等…咱们统称之为推送渠道。
推送渠道多了衍生出来的坏处也就多了。推送体系有一个很重要的指标叫做推送抵达率,是指发送的推送音讯成功抵达方针用户设备的比例。一般,推送抵达率能够运用以下公式计算:
推送抵达率 = (成功抵达的推送数 / 发送的推送数) * 100%
其中,成功抵达的推送数是指发送的推送音讯成功抵达方针用户设备的数量,发送的推送数是指发送的总推送音讯数量。
举个比如,假定你发送了100个推送音讯,其中有90个成功抵达了用户设备,那么推送抵达率能够计算为:
推送抵达率 = (90 / 100) * 100% = 90%
这意味着你的推送音讯有90%成功抵达了方针用户设备。
为了提高推送抵达率,就必须接入对应厂家的推送服务,否则压根收不到。所以Android APP在诞生之初基本就要集成小米推送、华为推送等不同国内手机厂商的推送体系 —— 他们本质上和FCM没有什么不同,能够简略了解为不同手机厂商自己的FCM。所以,为了用户能够正常收取推送音讯,市面上大多数Android运用从诞生之初就集成了各式各样的推送体系 —— 留意,这样的做法对用户和开发者来说,都是一种十分糟糕的体会。
关于用户自身,其实只需求一套厂商的推送体系就好了 —— 这很好了解,用户用小米手机,就只需求小米推送就好,并不需求华为推送、OPPO推送…但是APP开发时,并不知道用户会运用什么品牌的Android手机(渠道包例外),所以只能一股脑的塞入各式各样的推送体系,用户只能被动接受这一臃肿且冗余的设定…
关于开发者来说,缺少了Google的约束和标准,各家的推送渠道文档、运用方法层次不齐,开发者需求耗费大量精力去兼容不同的推送渠道,说多了都是泪…
一起,一些无良推送渠道为了所谓的推送抵达率,无所不用其极,研讨出了各式各样的黑科技,最典型的例如APP的链式发动,我愿称之为媲美摇一摇跳转广告的创造,这严重影响了Android体系的运用体会,早期的Android体系卡的一大半责任都归咎于此。
何谓APP链式发动,举个比如,用户的手机有运用A、B、C、D、F… A和F运用同一个无良推送渠道,及时用户手动关掉了运用A,当用户运用运用F时,推送渠道为了运用A的推送抵达率,会在后台偷摸发动运用了该推送体系的运用A —— 这显着违反了用户的运用初衷,一起家具了体系资源的运用,严重影响体系的流通度,间接给用户留下了“卡”的形象。
哎,国内Android开发者苦推送久矣!
混乱的文件办理
Android设备的存储空间大致能够分三个部分:
- 内部存储空间
每个运用都有自己独属的目录,和其他运用彻底隔离,咱们称之为内部存储空间,运用拜访自身的内部存储空间时,无需请求任何权限,这部分存储空间随运用卸载会主动删去。
- 外部存储空间
外部存储空间分为两部分,一部分和上面的内部存储空间效果彻底一致,也是运用自己独属,其他运用无法拜访,运用无需任何权限,随运用卸载删去,咱们称这部分为私有空间;与之相反的另一部分称之为公共空间,望文生义,这部分存储空间为一切运用共享,运用拜访需通过用户授权,运用卸载后这部分内容也不会随之删去。
- 体系存储空间
存放Android体系和一些体系相关文件的空间,无法直接拜访。
疏忽体系存储空间,开发者一般关注的为内部存储空间和外部存储空间。正常状况来讲,除了用户手动保存的相片等相关文件外,其他运用自身运行产生的文件理应存放于内部存储空间或外部存储空间中的私有空间部分,随App的卸载主动删去 —— 这很合理,但不是一切App都是这么合理的做的。
Android 10之前,Android体系的文件办理体系缺乏有用的约束,运用开发者能够将文件随意存放在任何位置,这导致了用户的文件体系碎片化相当严重,用户卸载了App,对应的文件也不会主动删去 —— 即便这些文件现已彻底没有任何用处,一朝一夕,用户的存储空间被挤压的越来越小,严重影响用户的体会,直呼Android真是太卡
了!
开发者适配的痛
咱们来看一段代码:
@TargetApi(19)
public static void translucent(Window window, @ColorInt int colorOn5x) {
if (!supportTranslucent()) {
// 版别小于4.4,绝对不考虑沉溺式
return;
}
if (QMUINotchHelper.isNotchOfficialSupport()) {
handleDisplayCutoutMode(window);
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
// 小米 Android 6.0 ,开发版 7.7.13 及以后版别设置黑色字体又需求 clear FLAG_TRANSLUCENT_STATUS, 因而还原为官方形式
if (QMUIDeviceHelper.isFlymeLowerThan(8) || (QMUIDeviceHelper.isMIUI() && Build.VERSION.SDK_INT < Build.VERSION_CODES.M)) {
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
return;
}
}
int systemUiVisibility = window.getDecorView().getSystemUiVisibility();
systemUiVisibility |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
window.getDecorView().setSystemUiVisibility(systemUiVisibility);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// android 6以后能够改状态栏字体颜色,因而能够自行设置为通明
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else {
// android 5不能修改状态栏字体颜色,因而直接用FLAG_TRANSLUCENT_STATUS,nexus体现为半通明
// 魅族和小米的体现怎么?
// update: 部分手机运用FLAG_TRANSLUCENT_STATUS时布景不是半通明而是没有布景了。。。。。
// window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 采取setStatusBarColor的方法,部分机型不支撑,那就纯黑了,确保状态栏图标可见
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(colorOn5x);
}
}
这是 QMUI 中用以完成沉溺式状态栏的代码,从代码的注释中咱们也能显着感觉出Android开发者适配的心酸:除了要适配不同Android体系间的差异,还要统筹国内各式各样国产ROM体系的差异…
以小见大,信任各位能体会Android开发者的心累程度…所以,Android开发者们,天天就沉溺在于适配斗智斗勇中 —— 这本不应如此。
拿什么解救你?我的Android手机
难不成Android手机现在仍是会越来越卡么?没救了?
非也非也,自Android体系发布以来,Google就一直致力于提高Android体系的安全性,加强用户的隐私维护,优化体系的流通性和易用性。不同Android体系版别在安全性和用户体会方面都进行了持续改善。以下是一些主要的改善点:
-
Scoped Storage 分区存储
(Android 10+): 引进分区存储机制,约束运用对外部存储的拜访权限,提高用户数据的隐私维护,解决Android体系此前混乱不胜的文件办理机制。 - 动态拜访时权限机制(Android 6+): 在较新的Android版别中,用户能够更精细地操控运用对设备权限的拜访,提高了用户对隐私的操控能力。
- 多任务处理改善: Android 7引进了分屏形式,答运用户一起在屏幕上显示两个运用程序,提高了多任务处理的效率。
- …
总结
一起,国内的手机厂商也在针对各种流氓APP的各种流氓行为不断发力,小米体系MIUI 12 后供给的照明弹功用、华为约束APP互相唤起等,现在Android手机的体会早已今非昔比。
总的来说,跟着Android体系版别的更新,Android设备在安全性、隐私维护和用户友好性方面不断进步,用户的安全性和体会方面也一直都是处于持续改善提高中。