0
点赞
收藏
分享

微信扫一扫

Android端应用秒开优化体验,轻松拿到了阿里Android高级开发工程师的offer

小沙坨 2022-04-22 阅读 64

而一般我们的初始化任务主要都会集中化在Application:onCreate()方法中,这就使得初始化任务在第一帧绘制之前得完成,这就造成了卡图标、应用启动慢。那么把任务打散呢?分散在LaunchActivity中去分段初始化?还是不行的,因为界面开始绘制是在onResume()方法开始后才开始绘制,所以,得从Activity的创建过程找办法。

main->Activity创建的这个过程会经过一系列framework层的操作,这些操作都是系统自动执行的,不易进行优化,不过可以在Activity创建这个过程前后来找一些蛛丝马迹,因为Activity的创建都会辗转到ActivityThread:performLaunchActivity()这个方法中,在这个方法中可以知道这么几件事:
1、先通过Instrumentation:newActivity()来创建一个Activity实例
2、再判断Application实例是否已创建,已创建则直接返回,否则调用
Instrumentation:newApplication()来创建Application实例,在这个过程中会依次执行attachBaseContext()和onCreate()方法
3、之后Activity:attach()方法会创建一个PhoneWindow对象,它就是界面,它有一个DecorView,调用setContentView()时会给配置Deco 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源 rView,其中就会设置一个背景:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-STpIOxDu-1650619844050)(https://user-gold-cdn.xitu.io/2017/10/11/eece8ff26ef664cd9e9ad4812437d8cd?imageView2/0/w/1280/h/960/ignore-error/1)]

我们的View也是add进DecorView中显示,它作为RootView肯定是最先显示,所以可以给 Android开源项目《ali1024.coding.net/public/P7/Android/git》 它设置个默认背景
4、最后依次调用Activity的onCreate、onStart等方法

措施

对于任务集中初始化化、耗时初始化原因导致应用在中低端机启动过慢,而Activity界面绘制的时机导致简单的将任务分给Activity初始化也不起作用,我们必须找一个切入点

所以,可以对任务进行分级的临界点可以这样分:

如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QmWBfSd6-1650619844051)(https://user-gold-cdn.xitu.io/2017/10/11/e07712123ea3b8eeec1f101472ef1844?imageView2/0/w/1280/h/960/ignore-error/1)]

对任务这样分级后,测了一下,应用的启动即使在低端机上,也能秒开:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f4ONdwfi-1650619844051)(https://user-gold-cdn.xitu.io/2017/10/11/019080ef5875615eb0ae09140683c013?imageView2/0/w/1280/h/960/ignore-error/1)]

分级带来的问题

Android核心知识点

面试成功其实是必然的,因为我做足了充分的准备工作,包括刷题啊,看一些Android核心的知识点,看一些面试的博客吸取大家面试的一些经验。

下面这份PDF是我翻阅了差不多3个月左右一些Android大博主的博客从他们那里取其精华去其糟泊所整理出来的一些Android的核心知识点,全部都是精华中的精华,我能面试到现在2-2资深开发人员跟我整理的这本Android核心知识点有密不可分的关系,在这里本着共赢的心态分享给各位朋友。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3S8FI9wi-1650619844052)(https://upload-images.jianshu.io/upload_images/16595031-35836b456e4b8831.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

不管是Android基础还是Java基础以及常见的数据结构,这些是无原则地必须要熟练掌握的,尤其是非计算机专业的同学,面试官一上来肯定是问你基础,要是基础表现不好很容易被扣上基础不扎实的帽子,常见的就那些,只要你平时认真思考过基本上面试是没太大问题的。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
DF,包知识脉络 + 诸多细节。

节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

举报

相关推荐

0 条评论