Android启动优化-布局优化

安卓应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的情况看,安卓开发还是一个热火朝天的发展,但高级人才却相对较少,如今移动互联网的开发者也逐渐开始注重插入技术、性能优化、行业新技术、系统架构等方面的进步。

安卓系统自诞生至今,经历了几次重要更新,最后选择了折中方案,使系统在安装和运行时各项指标都得到了优化,至此,安卓虚拟机的开发过程告终。

Android的启动优化就是性能优化中的一大内容。

说到Android启动优化,你一般会想到什么呢?

今天我们就来了解一下启动优化中的布局优化。

布局优化的现状和发展趋势

时间消耗原因

大家都知道布局装载是一个耗时的重灾区。尤其是启动阶段,作为第一个View的装载,非常耗时。

版面装入的时间很长,原因有二。

l读XML文件,这是一种IO操作。

l分析XML对象,反射创建视图。

普遍的做法是。

l减小布局嵌套层的数量,减少过度绘制。

l无负荷界面、错误界面等不需要加载。

那么,在这些实践之外,我们有什么方法可以优化呢?

解答。

l异步加载

l用编码方式来写布局。

异步加载

很久以前,google就提供了AsyncLayoutInflater,一个异步加载的方案,虽然这个方法有一些缺陷,在下文中讨论。

用编码方式来写布局。

以写布局的方式来编写代码,我们可能会想到使用java声明布局,对于稍复杂一些的布局,这种方式并不可取,有一些问题,比如难以维护,难以修改等等。在github上面,为了解决这个问题,产生了一系列优秀的开源库。

litho: https://github.com/facebook/litho

X2C: https://github.com/iReaderAndroid/X2C

为保留xml的优点,同时解决xml所带来的性能问题,我们开发了X2C方案。也就是说,在编译生成APK的过程中,需要翻译的layout翻译就会生成相应的java文件,这样开发者就可以写出布局或者原始的xml了,但是对于程序来说,运行时装载的是相应的java文件。

在编译过程中,我们使用APT(AnnotationProcessorTool)+JavaPoet技术来完成“注释”->“解注”->“翻译xml”->“生成java”整个过程的操作。

在大型项目中,这两个开源库基本上不会被使用,但它们的价值是可以肯定的,而且它们的核心思想非常重要。

xml布局加载耗时的问题,google也希望改善这一现状,最近Composebeta发布了Composebeta,他使用声明式UI编写布局,避免了xml带来的耗时。此外,还支持实时预览布局。这应是今后的趋势。

总结

以上介绍了布局优化的现状和发展趋势,下面我们一起来看看,有哪些布局优化的方法,可以在项目中应用。

l渐进加载。

l异步加载

l命令声明性UI。

android布局优化方案,Android启动优化-布局优化相关推荐

  1. SEO优化方案怎么做(seo推广优化方案)

    企业创建企业网站是为了增加品牌曝光率,为了让企业有一个好的形象,为了提升产品的口碑,可你没有发现一个问题,有的企业做网站做得很好,有的企业做网站确做得很烂,这到底是什么结果造成的,其实原因很简单,没有 ...

  2. android 启动优化方案,Android 项目优化(五):应用启动优化

    介绍了前面的优化的方案后,这里我们在针对应用的启动优化做一下讲解和说明. 一.App启动概述 一个应用App的启动速度能够影响用户的首次体验,启动速度较慢(感官上)的应用可能导致用户再次开启App的意 ...

  3. android app测试方案,Android App响应时间测试方案优化

    前言 在我之前写的一篇文章Android App响应时间测试方法研究提到一种比较通用的测试启动时间或者响应时间的方案,即利用Monkeyrunner的图片对比接口进行截图比较.但是由于MonkeyRu ...

  4. android+反调试+方案,Android反调试笔记

    1)代码执行时间检测 通过取系统时间,检测关键代码执行耗时,检测单步调试,类似函数有:time,gettimeofday,clock_gettime. 也可以直接使用汇编指令RDTSC读取,但测试AR ...

  5. android tts实现方案,Android自动朗读(TTS)的实现

    前言: Android提供了自动朗读支持.可以对指定文本内容进行朗读,从而发生声音:还允许把文本对应的音频录制成音频文件,方便以后播放.Android的自动朗读主要通过TextToSpeech来完成, ...

  6. android 插件化 方案,Android应用开发之Android 插件化,qihoo360插件方案配置教程

    本文将带你了解Android应用开发Android 插件化,qihoo360插件方案配置教程,希望本文对大家学Android有所帮助. Android 插件化,qihoo360插件方案 目录 Andr ...

  7. [分布式事务-TCC] 4. TCC的优化方案之一:最末参与者优化(LPO)

    文章导航 优化动机和指导原则 最末参与者优化(LPO) 优化动机和指导原则 当一笔分布式事务的参与者较多时,同时每个参与者都涉及到一阶段和二阶段,还有异常场景下的幂等控制,空回滚以及防资源悬挂处理,调 ...

  8. 如何评估ASO优化方案案例推广效果,优化aso方案

    ASO是什么?中文意思是应用商店优化,优化的是APP在应用商店中的各项因素,提升APP在应用商店中的搜索排名及榜单表现,从而获得更多的曝光和下载.从本质上讲,ASO是一项非常依赖应用商店的推广方式,熟 ...

  9. android 屏幕录制方案,Android录屏的三种解决方案

    本文总结三种用于安卓录屏的解决方案: adb shell命令screenrecord MediaRecorder, MediaProjection MediaProjection , MediaCod ...

最新文章

  1. swift实现ios类似微信输入框跟随键盘弹出的效果
  2. Jetty 基本使用样例
  3. 安卓高手之路之PackageManagerservice(二)
  4. C++ Primer 第三章 字符串、向量和数组
  5. 了解CMS(Concurrent Mark-Sweep)垃圾回收器
  6. orm2 中文文档 8. 聚合
  7. 【.NET开发之美】使用ComponentOne提高.NET DataMap中的加载速度
  8. bulk interface驱动_【驱动】USB驱动·入门
  9. PayPal通过WorldFirst港币账户免35美元提现实战教程!
  10. Android官方模拟器安装
  11. 万能乘法速算法大全_玩转扑克牌亲子游戏大全收藏 孩子爱上数学 快速提升计算能力...
  12. ERROR: Unable to access 'C:\Users\鏉庨摥\.emulator_console_auth_token': emulator consol...解决方法
  13. 区块链技术从入门到实践
  14. 2023年全国最新高校辅导员精选真题及答案53
  15. vim加载systemverilog语法高亮
  16. 房地产行业,怎样获取更多的客户,线上获客渠道有哪些?
  17. 使用Groovy和7-Zip-JBinding解压缩7-Zip文件
  18. spark内核SortShuffle解析_大数据培训
  19. 在pycharm的同路径下import .py文件报红问题
  20. pygame实现井字棋——3.逻辑优化

热门文章

  1. Windows IIS注册asp 此操作系统版本不支持此选项 错误解决方法
  2. kali linux 安装 Mysql Can‘t read from messagefile 报错解决方案
  3. 解决linux 升级高版本python3.7后yum不能使用的问题
  4. 解决ping 127.0.0.1 一般故障 问题
  5. Node Sass does not yet support your current environment: Windows 64-bit然如何解决,cnpm此问题解决方法
  6. 如何通过其值获取JavaScript对象中的键?
  7. UTF-8,UTF-16和UTF-32
  8. 我如何查看要使用git推送的内容?
  9. 如何从类型创建新的对象实例
  10. 如何仅从SQL Server DateTime数据类型返回日期