0
点赞
收藏
分享

微信扫一扫

Android优化——,怒肝三个月啃完这110道面试题

微言记 2022-03-11 阅读 75
  1. 自定义打点查看耗时
  • 应用生命周期节点
  • 启动的初始化方法节点
  • 其他耗时业务,算法节点

优缺点:

  • 精确,可上线
  • 修改成本高

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:aspectjrt: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查看文件生成的火炬图

优化方案

  1. 主题切换

设置自定义主题设置背景图,执行到onCreate方法后替换为Activiy的真实布局 2. 初始化分化 image

  • MultiDex以及Tinker的初始化操作
  • Application中的第三方组件的初始化
  1. 异步初始化组件,不阻塞主线程,设置异步线程为THREAD_PRIORITY_BACKGROUND
  2. 延迟初始化操作,再线程空闲时加载,
  3. EventBus、ota、bugly、migu、Linphone、Butterknife、地图、IOT
  • 设置线程池初始化任务
  1. 仿照AsyncTask新建线程池,核心线程数为2-4个
  2. 任务使用该线程池加载,如有顺序,使用CountDownLatch进行处理
  • 部分任务可以延迟加载,使用IdleHandler,在主线程空闲时加载
  • Multidex预加载优化

优化方案

在使用Aspect进行时间的监测时,发现Application和Activity中的初始化三方进程耗费了大量时间,在初始化时,我们开启了百度OTA服务,Bugly监测服务,咪咕音乐服务,阿里IOT服务,日志监测服务,Linphone语音服务,Ifly语音服务等,这些串行起来是比较耗时的。
所以我们采用开启一个线程池的方案,在子线程启动这些服务,对于OTA,IOT,日志检测,Linphone等服务不需要在第一时间初始化,所以放到线程池中根据执行顺序分别初始化。但是对于咪咕、Ifly和bugly来说,需要第一时间初始化,才能进行后边的逻辑,所以我们将这些服务优先初始化,并联合CountDownLatch,当必须的服务初始化完成后,才进入下面的流程。

最后

都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。

技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;

《Android架构视频+BAT面试专题PDF+学习笔记​》

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望**这份系统化的技术体系**对大家有一个方向参考。

EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**对大家有一个方向参考。

举报

相关推荐

0 条评论