3.AOP打点 加入aspectjx库,打印出Application,Activity的耗时时间,进行针对优化
根路径build.gradle中添加
classpath ‘com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0’
app中build.gradle中添加
apply plugin: ‘android-aspectjx’
…
implementation 'org.aspectj:aspect
jrt:1.8.+’
使用如下:
@Aspect
public class LauncherAop {
@Around(“call(* com.jw.myapplication.MainActivity.**(…))”)
public void getTime(ProceedingJoinPoint joinPoint) throws Exception{
Signature signature = joinPoint.getSignature();
String name = signature.toShortString();
long time = System.currentTimeMillis();
try {
joinPoint.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
Log.d("kangkang = ","kangaop = " +name+ " cost " + (System.currentTimeMillis() - time));
}
}
4.TraceView
代码中开启
Debug.startMethodTracing();
method();
Debug.stopMethodTracing();
生成.trace文件,导入Android Studio,使用profile中的cpu查看文件生成的火炬图
优化方案
- 主题切换
设置自定义主题设置背景图,执行到onCreate方法后替换为Activiy的真实布局 2. 初始化分化
- MultiDex以及Tinker的初始化操作
- Application中的第三方组件的初始化
- 异步初始化组件,不阻塞主线程,设置异步线程为THREAD_PRIORITY_BACKGROUND
- 延迟初始化操作,再线程空闲时加载,
- EventBus、ota、bugly、migu、Linphone、Butterknife、地图、IOT
- 设置线程池初始化任务
- 仿照AsyncTask新建线程池,核心线程数为2-4个
- 任务使用该线程池加载,如有顺序,使用CountDownLatch进行处理
- 部分任务可以延迟加载,使用IdleHandler,在主线程空闲时加载
- Multidex预加载优化
优化方案
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
上面分享的百度、腾讯、网易、字节跳动、阿里等公司2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
【Android高级架构视频学习资源】
**Android部分精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!