Android性能优化及安全要点

本文详细介绍Android应用性能优化的多个方面,包括内存管理、CPU效率提升、UI渲染优化、多线程处理技巧等,并提供了一些实用工具和技术建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

性能优化方向
内存
内存泄露,在组件中使用线程时会出现内存泄露,RxJava bindLifeCycle解决此问题,使用Handler时,RxJava可以解决。
Activity或者Fragment结束的时候,关闭动画,Dialog等
LeakCany监测内存泄露。流、游标等关闭
图片占用内存,采用低质量加载,缩小加载,网络图片可以考虑服务器动态压缩图片尺寸。Bitmap使用完毕要及时释放。
缓存的使用,加载比较消耗资源或者经常使用的数据考虑使用缓存,但要注意内存不足的时候及时释放
使用Android专用数据结构,SparseArray、ArrayMap
onTrimMemory中释放部分资源
网络接口返回数据尽量精简,实体类中尽量只包含必须字段。
Intent避免携带大量数据,如必须建议采用EventBus
CPU
避免CPU做一些无用的计算,比如
使用短路与&& ||
缓存,以空间换时间

UI
减少布局嵌套层级,使用ViewStub,merge标签,使用RelativeLayout、ConstrintLayout
布局背景布要重复设置,父布局已经设置了子布局布要设置同样的背景颜色。
尽量使用自建Drawable来替代图片设置背景。



多线程
多线程,使用线程池,避免重复创建线程及上下文切换的开销。
耗时操作尽量在子线程中进行,比如接口返回数据解析以及处理都应在子线程中,直到渲染到View时切回UI线程。
线程池不要使用Executors自带的方法,而是使用new ThreadPoolExecutor()方式创建。
FixedThreadPool和SingleThreadPool允许的请求队列长度为Integer.MAX_VALUE,会导致堆积大量请求,进而OOM
CacheThreadPool和ScheduledThreadPool允许创建的线程数为Integer.MAX_VALUE,会导致创建大量线程,进而OOM

Application初始化的时候加入进程判断,单一进程仅初始化自己需要的资源。


1、使用APP,观察不流畅,卡顿的情况
2、检查代码,寻找问题
3、再使用再观察
4、仍有问题,则使用AndroidStudio上的性能分析工具,监测内存和CPU使用比较高的地方,dump出内存快照进行对比

工具AndroidStudio、MAT、开发者选项中的过度渲染,CPU过度使用等开关




安全:
allowBackup设置为false
debugable设置为false
Https HostNameVerifer的verify方法里面做合法校验
打包使用V2签名,将对APK的修改做更多保护。
组件无严格权限控制的情况下exported设为false
不要把敏感信息打印在log中,
秘钥不能硬编码在程序中,应使用Android自身的秘钥库(KeyStore)机制或更安全的方式保存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值