Android 项目优化(六):项目开发时优化技巧总结
在之前我们讲了很多能够优化 Android 开发项目质量的方案,这些方案更多的是从一些比较专精的方向切入的,阐述的是一些比较重要且独立的优化方案。
本文我们将总结一下在日常开发过程中我们能够使用的一些优化项目的技巧和方案。
一、RecycleView 优化
RecycleView在开发时可以考虑以下优化的方案:
1. 数据处理和视图加载分离
a. 数据的处理逻辑尽可能放在异步处理,onBindViewHolder方法只做数据填充视图的操作。
b. 对ItemView设置监听器,不要对每一个Item都调用addxxListener,可以考虑公用一个xxListener,根据ID的不同来操作,优化了对象的频繁创建带来的资源消耗。
2. 数据加载优化
a. 分页拉去远端数据,并对拉去下来的数据进行缓存,尽可能提升二次加载速度。
b. 对于新增的或者删除数据通过 DiffUtil 进行局部数据的刷新,尽量不进行全局数据刷新。
c. 对于使用库版本在25.1.0及以上的时候使用Prefetch功能。
补充:
a. DiffUtil 推荐博客和项目地址:https://github.com/mcxtzhang/SupportDemos、【Android】RecyclerView的好伴侣:详解DiffUtil
b. Prefetch 推荐博客地址:RecyclerView Prefetch功能探究。
3.布局优化
a. 减少布局层级,简化ItemView。
b. 如果Item高度是固定的话,可以使用RecycleView.setHasFixedSize(true)来避免requestLayout浪费资源。
c. 如果多个RecycleView的Adapter是一样的,比如嵌套的RecycleView中存在一样的Adapter,可以通过设置RecycleView.setRecycleViewPool(pool),来共用一个RecycleViewPool。
二、WebView 优化
1. WebView 加载优化
a. 可以将一些资源文件放在assest目录,然后重写WebViewClient的shouldInterreptRequest方法,进行访问地址拦截,当url地址命中本地配置的url时,使用本地资源替代,否则就使用网络上的资源。
b. WebView 初始化慢,可以在适当的时机初始化好一个WebView待用,如果时机合适也可以在初始化好之后请求数据。
2. WebView 内存泄漏优化
a. 建议直接在代码中创建WebView,即使用new WebView(),并传入Application Context 代替在 XML 里面声明防止 Activity 引用被滥用,能解决90%以上的WebView内存泄漏。使用示例如下:
webview = new WebView(getContext().getApplication());
container.addView(webview);
b. 及时销毁WebView。 示例代码如下:
if(webview != null) {
webview.setWebViewClient(null);
webview.setWebChromeClient(null);
webview.loadDataWithBaseURL(null, "”, "text/html", "utf-8", null);
((ViewGroup) webview.getParent()).removeView(webview);
webview.destroy();
webview = null;
}
三、Apk 包体积优化
1. 资源优化
a. 使用 Lint 工具扫描工程资源,手动移除无用资源。
b. 在Gradle参数中配置 shrinkResource=true。
c. 优先考虑使用Shape代码、.9图、svg矢量图、VectorDrawable 类来替换传统的图片。
2. 代码优化
a. 启用混淆以移除无用代码。
b. 检查代码逻辑,提高复用率。
3. so库优化
可以考虑只提供主流架构的支持,比如arm,对于mips和x86架构可以考虑不提供支持
android {
defaultConfig {
...
ndk {
abiFilters "armeabi-v7a"
}
}
}
Android 项目优化(六):项目开发时优化技巧总结的更多相关文章
- IT第八天 - 类的应用、debug、项目开发模式优化
IT第八天 上午 类的应用 1.对象在实例化时是非常耗费系统资源的,因此要尽量减少new字段的使用 2.类的初始值是null,在使用未实例化的类时,很容易导致报错:NullExceptionPoint ...
- Web项目开发性能优化解决方案
web开发性能优化---安全篇 1.ip验证 2.操作日志.安全日志.登录日志 3.SQL注入校验 4.权限管理 5.验证规范(前端.后端.数据库约束) 2014-10-29 08:04 2773 ...
- (转) Android开发性能优化简介
作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...
- [素材资源] Android开发性能优化简介(非常不错的)
转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost& ...
- 转——Android应用开发性能优化完全分析
[工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...
- Android 应用开发性能优化完全分析
1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...
- 【转】Android应用开发性能优化完全分析
http://blog.csdn.net/yanbober/article/details/48394201 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关 ...
- Android应用开发性能优化完全分析
1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...
- Android开发性能优化总结(一)
安卓开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户. 在实际开发和学习中,我总结了一下关于安卓性能的优化,供大家参考交流. ...
随机推荐
- 2019 牛客网 第七场 H pair
题目链接:https://ac.nowcoder.com/acm/contest/887/H 题意: 给定A,B,C问在[1,A]和[1,B]中有多少对x,y满足x&y>C或者x^y ...
- Chrom谷歌浏览器没网之最全解决办法之一
一开始查找百度很多方法都不行,,第一次尝试.最有希望和看着像的是:1.win+r --> 输入regedit 打开注册表2.打开目录HKEY_CURRENT_USER\Software\Micr ...
- 程序员的算法课(14)-Hash算法-对海量url判重
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...
- 【Android - 自定义View】之View的layout过程解析
layout(布局)的作用是ViewGroup用来确定子元素的位置,在这个过程中会用到两个核心方法: layout() 和 onLayout() .layout()方法用来确定View本身的位置,on ...
- Prometheus PromQL 简单用法
目录 说明 CPU 内存 磁盘监控 磁盘空间利用率百分比 预计饱和 说明 基于上一篇文章的基础,这里做一些关于 CPU.内存.磁盘的一些基础查询语句. CPU 通过查询 metric值为 node_c ...
- TableViewCell的封装(显示不同内容)
http://blog.csdn.net/qq_24513939/article/details/45968123
- 小白的springboot之路(三)、集成mybatis与MySQL
0.前言 mybatis属于半自动的ORM,相比hibernate这种全自动的ORM,兼顾了性能与易用:目前企业项目中,基本都是mybatis的天下:今天就来整合mybatis与MySQL: 1.整合 ...
- phpStudy搭建PHP服务器
目录 1 下载 2 安装 3 新建站点 4 配置host phpStudy是一个PHP调试环境的程序集成包. 该程序包集成最新的 Apache+Nginx+LightTPD PHP MySQL+php ...
- F#周报2019年第49期
新闻 宣告.NET Core 3.1 新书:Kevin Avignon的F#提升效率 .NET Core 2.2将在2019年12月23日迎来终结 Visual Studio 16.5预览版1中升级了 ...
- 爬虫新宠requests_html 带你甄别2019虚假大学 #华为云·寻找黑马程序员#
python模块学习建议 学习python模块,给大家个我自己不专业的建议: 养成习惯,遇到一个模块,先去github上看看开发者们关于它的说明,而不是直接百度看别人写了什么东西.也许后者可以让你很快 ...