在以前咱们讲了不少可以优化 Android 开发项目质量的方案,这些方案更多的是从一些比较专精的方向切入的,阐述的是一些比较重要且独立的优化方案。html
本文咱们将总结一下在平常开发过程当中咱们可以使用的一些优化项目的技巧和方案。android
RecycleView在开发时能够考虑如下优化的方案:git
a. 数据的处理逻辑尽量放在异步处理,onBindViewHolder方法只作数据填充视图的操做。github
b. 对ItemView设置监听器,不要对每个Item都调用addxxListener,能够考虑公用一个xxListener,根据ID的不一样来操做,优化了对象的频繁建立带来的资源消耗。web
a. 分页拉去远端数据,并对拉去下来的数据进行缓存,尽量提高二次加载速度。 缓存
b. 对于新增的或者删除数据经过 DiffUtil 进行局部数据的刷新,尽可能不进行全局数据刷新。网络
c. 对于使用库版本在25.1.0及以上的时候使用Prefetch功能。架构
a. DiffUtil 推荐博客和项目地址:https://github.com/mcxtzhang/SupportDemos、【Android】RecyclerView的好伴侣:详解DiffUtil异步
b. Prefetch 推荐博客地址:RecyclerView Prefetch功能探究。svg
a. 减小布局层级,简化ItemView。
b. 若是Item高度是固定的话,可使用RecycleView.setHasFixedSize(true)来避免requestLayout浪费资源。
c. 若是多个RecycleView的Adapter是同样的,好比嵌套的RecycleView中存在同样的Adapter,能够经过设置RecycleView.setRecycleViewPool(pool),来共用一个RecycleViewPool。
a. 能够将一些资源文件放在assest目录,而后重写WebViewClient的shouldInterreptRequest方法,进行访问地址拦截,当url地址命中本地配置的url时,使用本地资源替代,不然就使用网络上的资源。
b. WebView 初始化慢,能够在适当的时机初始化好一个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; }
a. 使用 Lint 工具扫描工程资源,手动移除无用资源。
b. 在Gradle参数中配置 shrinkResource=true。
c. 优先考虑使用Shape代码、.9图、svg矢量图、VectorDrawable 类来替换传统的图片。
a. 启用混淆以移除无用代码。
b. 检查代码逻辑,提升复用率。
能够考虑只提供主流架构的支持,好比arm,对于mips和x86架构能够考虑不提供支持
android { defaultConfig { ... ndk { abiFilters "armeabi-v7a" } } }