Android过度绘制

Android 从一诞生到现在已经发展到7.0版本,卡顿现象一直被用户所吐槽 Android的流畅度确实不如IOS操作系统 哪怕一些大型企业的APK也会存在卡顿现象,例如:咸鱼,每一个开发者应该注意性能方面优化的问题,性能优化我们不得不提及:过度绘制的概念,过度绘制指的是同一个像素,在同一时间内被重复绘制多次,同时消耗大量的CPU资源,在Android手机的开发者选项中有一个调试过度选项的功能,打开该选项之后就会出现蓝白相间的色块这就是过度绘制的信息

开发者选项
比如上界面蓝色代表绘制一次,绿色代表绘制两次,浅红色代表重复绘制三次,深红色代表重复绘制四次,纯白色代表从没有重复绘制过!

重复绘制
重复绘制会导致界面加载掉帧,不流畅,对于用户体验来说就是特别卡顿,为了开发的流畅度而言,提升应用流畅度,优化过度绘制这项工作还是非常有必要的!开发的原则就是不允许超过面积1/4的屏幕绘制超过三次
我的项目

优化方法

1.移除默认的windows窗体
2.一般默认的窗体都会有一个默认的windowsBackground

<style name="Theme.Light">
    <item name="isLightTheme">true</item>
    <item name="windowBackground">@drawable/screen_background_selector_light</item>
    ...
</style>

比如默认的Light主题,如果不移除系统窗体就会默认多绘制一次,系统ActionBar一般并不是我们所需要的,所以干脆移除提高效率
2.移除不必要的背景颜色!比如在我们开发过程中设置Listview的背景颜色为白色 就没有必要设置Listview的item的背景颜色为白色了 这样重复的操作是没有必要的!而且边距margin没有控制好会导致点击的状态会出现非整个条目的颜色渐变!还有一个比较常见的应用场景就是 当我们去加载首页的时候 如果我们给Viewpager里面的Fragment加载背景颜色 我们很久没有必要再给Activity的根布局再添加背景颜色了
3.写合理高效的布局尽量减少布局的嵌套,比如在ListView我们添加分割线如果在布局文件里面添加分割线加深了布局层级,多了两级绘制,如果我们在代码里面将driver add进去就会避免了这个问题 我们不要特意为了设置margin值特意给driver包裹一层LinearLayout
在开发中 我们如何优化我们的代码 过度绘制与优化后的布局

优化方法:
先分析每个地方最少可以会之多少次,不合理就可以开始优化了,例如上图一所有的item都是绿色的 很明显是经过了二度绘制 然后看一下底部item是灰色 经过了一次绘制 检查下来可以发现是因为 没有 去除 windowBackGround 所以我们设法去除windowsBackGround即可

<think>好的,我现在需要帮助用户了解如何在Linux中使用tar命令创建和压缩tar包。首先,我应该回顾用户提供的系统级指令,确保回答符合格式要求,比如行内数学表达式用$...$,独立公式用$$...$$,正确使用LaTeX语法,用中文回答,并生成相关问题。同时,用户引用了三个参考资料,我需要从中提取有用的信息,并在回答中适当引用。 首先,用户的问题是关于如何创建和压缩tar包,以及tar命令的使用指南。根据引用内容,引用[1]提到tar命令用于打包和压缩,引用[2]说明了tar通常与gzip和bzip2结合使用,引用[3]给出了创建目录并打包的例子。需要将这些信息整合成一个结构清晰的指南。 接下来,我需要按照用户的要求分步骤说明。可能的结构包括基础命令格式、创建tar包、压缩选项、解压命令、常用参数等部分。每个部分需要结合引用中的例子,比如使用tar -cvf创建包,用gzip或bzip2压缩,解压时的不同参数。 需要注意的是,用户希望回答真实可靠,因此要确保命令的正确性。例如,打包目录的命令tar -cvf newDir.tar dirA dirB dirC,来自引用[3]。压缩时使用-z或-j选项对应不同的压缩方式,如引用[2]提到的.tar.gz.tar.bz2。 同时,用户要求生成相关问题。根据主题,可能的问题包括不同压缩算法的区别、查看tar包内容的方法、排除特定文件、分卷压缩等,这些都需要基于命令的功能来设计。 最后,检查是否所有行内代码和数学表达式都正确使用了$或$$,引用标识是否正确添加,比如每个引用来源的末尾加上[^1]、[^2]或[^3]。确保没有使用markdown格式,语言口语化,结构清晰。</think>### Linux tar命令使用指南 #### 一、基础命令格式 tar命令的标准结构为: ``` tar [选项] 文件名 待打包文件/目录 ``` 其中`-c`表示创建打包文件,`-x`表示解包,`-v`显示过程详情,`-f`指定文件名(必须放在最后)[^3] #### 二、创建tar包 1. **基础打包** 将dirA、dirB、dirC打包为newDir.tar: ```bash tar -cvf newDir.tar dirA dirB dirC ``` 注意顺序:`选项 > 目标文件名 > 源文件` 2. **增量打包** 使用`-u`选项添加新文件: ```bash tar -uvf existing.tar newfile.txt ``` #### 三、压缩选项 | 参数 | 压缩算法 | 文件扩展名 | 示例命令 | |------|---------|------------|----------| | `-z` | gzip | .tar.gz | `tar -czvf project.tar.gz src/` | | `-j` | bzip2 | .tar.bz2 | `tar -cjvf logs.tar.bz2 /var/log` | | `-J` | xz | .tar.xz | `tar -cJvf backup.tar.xz data/` | #### 四、解压命令 解压不同格式的压缩包: ```bash tar -xzvf file.tar.gz # 解压gzip tar -xjvf file.tar.bz2 # 解压bzip2 tar -xJvf file.tar.xz # 解压xz ``` #### 五、高级技巧 1. **查看内容** 不解压查看包内文件列表: ```bash tar -tf archive.tar ``` 2. **排除文件** 使用`--exclude`参数: ```bash tar -czvf backup.tar.gz --exclude='*.tmp' /home/user ``` 3. **分卷压缩** 将大文件分割为100M的卷: ```bash tar -czvf - bigfile | split -b 100M - bigfile.tar.gz. ``` ### 注意事项 1. 打包时尽量使用相对路径 2. 压缩率排序:xz > bzip2 > gzip(压缩时间相反) 3. 长期存储推荐使用xz格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值