Android面试速查手册:Android优化篇

Android面试文章系列合集,欢迎阅读和收藏

  1. 你距离Android高薪,只差这一份Android面试手册(2021年最新版)

  2. Android面试速查手册:Java基础篇

  3. Android面试速查手册:Android基础篇

  4. Android面试速查手册:Android优化篇

  5. Android面试速查手册:Android进阶篇

  6. Android面试速查手册:Android常用开源框架原理

文章目录

  • 启动优化

  • 应用瘦身

  • 网络优化

  • 电量管理

  • 内存管理

  • OOM

  • 图片优化

  • 绘制优化

  • 稳定性优化

  • I/O优化

  • ANR优化

  • 安全

启动优化

==============================================================

  1. 启动黑白屏

方法1:自定义背景图 + 全屏

方法2:透明 + 禁用窗口预览动画

方法3(推荐):自定义背景图+透明状态栏

  1. 启动耗时检测

命令行、写一个计时工具TimeUtils、nimbledroid

  1. 优化方案

Application和Activity的优化。

懒加载:

Application:SDK。

Application:static变量。

Activity:viewstub。

Activity:Fragment。

开启子线程处理。

  1. 启动器

CountDownLatch

  1. IntentService

  2. IdleHandler

应用瘦身

==============================================================

  1. AndResGuard资源文件瘦身;

  2. lint去除无用资源:Analyze > Run Inspection By Name > unused resources;

  3. proguard:开启 minifyEnabled 混淆代码,可以压缩文件,使用 shrinkResources 去除无用资源;

  4. 图片:

使用svg格式(xml格式);

tinypng压缩;

webp格式;

  1. 插件化

  2. 只保留一个cpu架构的so文件:armeabi-v7a

  3. 去除多语言;

  4. 去除第三方库,比如rxjava等;

网络优化

==============================================================

  1. API接口设计:多个api得到的数据合并一个api得到;

  2. GZip压缩request和response;

  3. Protocol Buffer代替json;

  4. 获取图片的URL告知服务器所需图片的宽高;

比如根据不同网络条件返回不同大小图片;采用webp;

  1. 大文件下载断点续传;

  2. 增量包:bsdiff和bspatch;

  3. 网络请求的数据进行缓存;

比如将网络请求得到的数据放入数据库,每次加载页面先从数据库获得,等获取到网络数据后更新UI和数据库;

  1. JobScheduler在wifi情况下进行下载任务,比如广告等;

5.0后用JobScheduler,8.0后用WorkManager。

  1. webview加载,涉及到前端html页面优化;

  2. 弱网优化:先缓存请求,等网络情况好时再通过JobScheduler发送请求。比如点赞。通过OkHttpClient配置cache,当手机没有联网的时候,就可以直接从缓存中加载数据。还可以设置读、写、连接超时。

  3. 避免轮询;

  4. CDN的使用;

  5. 避免DNS解析,采用动态IP,否则可能产生劫持;

电量管理

==============================================================

Battery-Historian。

获取电量报告、分析;

wakelock、AlarmManager尽量不用;

JobScheduler 替换 Service,在连接上wifi或者充电时运行这些任务。

后台运行、位置服务、BroadcastReceiver;

内存管理

==============================================================

单例、handler、静态变量、匿名内部类、注册与取消注册、定时任务、资源关闭、属性动画、webview内存泄漏(开个新进程)。

内存抖动:内存分配速度大于回收速度。比如拼接string字符串,换成stringbuffer或stringbuilder。

工具:profiler、MemoryAnalyzer、leakcanary

OOM

=============================================================

http://hukai.me/android-performance-oom/

  1. webview

不要在布局中直接初始化 webview,而是在需要的时候在 Activity 中动态创建 webview ,并且在创建 webview 时使用 Application 的上下文。

图片优化

==============================================================

  1. cdn

  2. https://blog.csdn.net/u011077027/article/details/92129708

绘制优化

==============================================================

系统设置–开发者选项–调试GPU过度绘制。

原理:减少GPU过度绘制,减少CPU工作。

方案:include、merge、ViewStub、

ConstraintLayout 降低层级、CompoundDrawable减少View数量

最后

这里我希望可以帮助到大家提升进阶。

内容包含:Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。

喜欢本文的话,不妨给我点个小赞、评论区留言或者转发支持一下呗~

img

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值