Android性能优化——APK瘦身大全,万字长文

  • 对于第三方库的管理,通常建议封装一个 统一管理三方库的基础库 ,这样有利于后期库的维护
  • 如果我们需要某个库的某小部分功能,那么建议就是 仅引入所需部分功能代码 即可,加入我们使用了Picasso,但是我们只需要它支持webp功能,那么这时候我们就只引入webp功能就好了 原则就是 能小则小,不用最好

移除无用代码

通常是伴随着业务的不断迭代,业务代码只加不减,还有越来越多的代码不敢删除,这个时候我们就需要对每个页面用户的访问情况进行监测,通常我们可以通过使用埋点技术来对页面的生命周期进行埋点,比如对Activity的onCreate进行埋点,Fragment的构造进行埋点,可以通过类似的手段来分析用户操作行为,这样可以更好进行业务的优化。 随便提一句,使用AOP埋点超好

资源瘦身

冗余资源

1000行代码可能占用5KB的资源,但是100张图片可能就是上百Kb的资源

可见对资源的一个优化是多么的重要,那么就需要删除一些冗余资源,操作如下:

资源文件右键–>Refactor–>Remove Unused Resource

图片处理

关于图片这一块,我们提到的次数是真的超超超多了,本文不对图片处理进行解释,具体对图片的处理请参考Bitmap详解。 关于图片,我们可能进行会说到如何进行选择,还有对它进行的压缩处理。 图片有png、jpg和webp这三种格式,png无损,占用的资源是最大的

png>jpg>webp // 资源从大到小

如果没有特殊要求,只考虑占用资源的大小,相信大家应该知道怎么选了。

图片压缩就不过多的说了,推荐tinypng和TinyPngPlugin,

资源混淆

没什么好说的,大家看下AndResGuard,主要是将冗长的资源文件路径缩短,从而达到一个节省资源的目的。

SO瘦身

SO,简单的说就是Android上的一个动态链接库,关于SO的操作,请进行JNI相关资料进行查阅

我们都知道,在Android中有7类CPU架构,对应的ABI:

如果说将这些SO都加载进来,势必会造成APK的体积膨胀,因此需要通过一些手段来解决

SO移除

在build.gradle的defaultConfig配置中添加下面的代码

ndk {
abiFilters “armeabi-v7a” //目前流行的armeabi和armeabi-v7a
}

当然这样做,也有缺陷,可能部分用户因为无法加载so库,从而导致用户体验差

如果说我们需要完全的支持所有设备机型,那么付出的代价真的太大了,此时我们可能通过动态加载的方式来解决

动态加载SO

  • 将所有的so文件都放到armeabi文件夹下,通过获取用户的CPU架构进行动态加载
  • 可以将需要的so文件上传到服务器,然后先获取用户的CPU架构,再从服务器上下载对应的so文件进行加载
  • 通过插件化插拔的方式进行下发

《Android学习PDF+架构视频+最新面试文档+源码笔记》

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

总结

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上述【高清技术脑图】以及【配套的面试真题PDF】可以点击我的GitHub免费获取

本文在开源项目:[https://github.com]中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL多数据源是指在一个应用程序中同时使用多个不同的MySQL数据库来存储和管理数据的技术。它可以帮助开发人员更灵活地处理各种数据库操作,提高程序的性能和可扩展性。下面是一个完整的MySQL多数据源教程。 一、设置数据库连接信息 1. 在应用程序的配置件中,创建多个数据库连接的配置项。例如,可以为每个数据源创建一个配置项,分别命名为db1、db2等。 2. 在配置项中,设置每个数据源的连接信息,包括数据库地址、用户名、密码等。 二、创建数据源管理器 1. 创建一个数据源管理器类,用于管理多个数据源。该类需要实现数据源的动态切换和获取。 2. 使用Java的线程安全的数据结构,如ConcurrentHashMap来存储数据源信息。将配置件中的数据库连接信息加载到数据结构中。 3. 实现方法来切换不同的数据源,通过传入数据源的名称来切换到对应的数据库。 三、实现数据源切换 1. 在应用程序中,根据业务需求选择需要使用的数据源。可以通过调用数据源管理器的方法来切换数据源。 2. 在DAO层的代码中,根据当前使用的数据源名称,选择对应的数据源进行数据库操作。 四、使用多数据源进行数据库操作 1. 在DAO层的代码中,区分不同的数据源,并将数据库操作的代码包装在对应的数据源中。 2. 在业务层的代码中,调用DAO层的方法来进行数据库操作。不同的数据源会自动切换。 五、处理事务 1. 如果需要在一个事务中操作多个数据源,可以使用分布式事务的方式来处理。 2. 可以使用开源的分布式事务框架,如Atomikos、Bitronix等来实现多数据源的事务管理。 六、监控和维护 1. 使用监控工具来监控多个数据源的使用情况,包括连接数、查询次数等。 2. 定期对数据库进行维护,包括索引优化、数据清理等工作,以保证数据库的性能和稳定性。 通过以上步骤,我们可以实现MySQL多数据源的配置和使用。使用多数据源可以更好地管理和处理不同的数据库操作,在提高程序性能和可扩展性的同时,也提供了更灵活的数据操作方式。同时,需要注意合理选择和配置数据源,以及监控和维护数据库,以保证系统的运行效率和数据的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值