android——开发中哪些习惯会影响卡顿的发生

news2024/11/16 22:37:55

开发中哪些习惯会影响卡顿的发生,如下:

1.布局太乱,层级太深。

  • 1.1:通过减少冗余或者嵌套布局来降低视图层次结构。比如使用约束布局代替线性布局和相对布局。

  • 1.2:用 ViewStub 替代在启动过程中不需要显示的 UI 控件。

  • 1.3:使用自定义 View 替代复杂的 View 叠加。

2.主线程耗时操作

  • 2.1:主线程中不要直接操作数据库,数据库的操作应该放在数据库线程中完成。

  • 2.2:sharepreference尽量使用apply,少使用commit,可以使用MMKV框架来代替sharepreference。

  • 2.3:网络请求回来的数据解析尽量放在子线程中,不要在主线程中进行复制的数据解析操作。

  • 2.4:不要在activity的onResume和onCreate中进行耗时操作,比如大量的计算等。

  • 2.5:不要在 draw 里面调用耗时函数,不能 new 对象

3.过度绘制

过度绘制是同一个像素点上被多次绘制,减少过度绘制一般减少布局背景叠加等方式,如下图所示右边是过度绘制的图片。

4.列表

RecyclerView使用优化,使用DiffUtil和notifyItemDataSetChanged进行局部更新等。

5.对象分配和回收优化

自从Android引入 ART 并且在Android 5.0上成为默认的运行时之后,对象分配和垃圾回收(GC)造成的卡顿已经显著降低了,但是由于对象分配和GC有额外的开销,它依然又可能使线程负载过重。 在一个调用不频繁的地方(比如按钮点击)分配对象是没有问题的,但如果在在一个被频繁调用的紧密的循环里,就需要避免对象分配来降低GC的压力。

减少小对象的频繁分配和回收操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#学习记录——C# winform程序怎么打包成安装项目(VS2019图解)

今天学习将Winform程序打包成安装项目,参考网上教程,并记录尝试过程。 测试打包的程序为用C# Winform开的的一个客户端程序。 1、安装打包插件 在程序打包之前需要安装Microsoft Visual Studio Installer Projects插件。 1.1、选择扩展管理 在VS2019…

(面经四):笔试

面试经历(四) 时间:2022-11-14 笔试 (培训机构真该洗啊,写完后根本不看你写的笔试,直接给你说送你去培训,技术什么都没有问,直接拿着你的简历画画,画什么实训和培训的不同…

Docker建立自己的私有仓库

仓库(Repository)是集中存放镜像的地方。 一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务 器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说&am…

Python学习------起步3(序列与数据类型转换)

目录 序列 1.切片 2.列表(list) 3.元组 数据类型转换 习题 好了,今天就开始序列的学习了,其实在C语言里面我们学过数组或者字符数组,Python中的序列跟它们一样是一种数据的储存方式,其中学习过程也是比…

LeetCode动态规划(九):完全背包(初级)

学习目标: 理解完全背包和0-1背包遍历顺序的区别 学习内容: 15. LeetCode377. 组合总和 Ⅳhttps://leetcode.cn/problems/combination-sum-iv/ 16. 爬楼梯(进阶班版) 17. LeetCode322. 零钱兑换https://leetcode.cn/problems/coin-change/ 18. Leet…

winform发布功能附加dll、db、xml、json等文件

我们日常进行程序的更新升级可能会用到winform的发布功能,但有些文件可能会无法伴随着发布一同发布出去或者每次发布后文件的数据被覆盖,下面一起看一下怎么解决: winform发布功能参考我另一篇文章https://blog.csdn.net/qq_39569480/articl…

筑基四层 —— 详解三子棋和扫雷

目录 一.修炼必备 二.三子棋详解 三.扫雷详解 四.三子棋和扫雷的完整代码 !!!恭喜你,成功突破至筑基四层!!! 一.修炼必备 1.入门必备:VS2019社区版,下载地址&#xff…

leetcode51,52 N皇后相关(回溯方法)

题目1:N皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题…

入职一年,那个准的下班的人,比我先升职了...

最近心态崩了。 和我同期一道进公司的人又升了一级,可是明明大家在进公司时,他不论是学历还是工作经验,样样都不如自己,眼下不过短短的两年时间便一跃在自己的职级之上,这着实让我有几分不甘心。 我想不明白&#xff…

谈谈Linux epoll惊群问题的原因和解决方案

近期排查了一个问题,epoll惊群的问题,起初我并不认为这是惊群导致,因为从现象上看,只是体现了CPU不均衡。一共fork了20个Server进程,在请求负载中等的时候,有三四个Server进程呈现出比较高的CPU利用率&…

OpenCV 图像平滑处理

本文是OpenCV图像视觉入门之路的第10篇文章,本文详细的在图像上面进行了图像均值滤波、方框滤波 、高斯滤波、中值滤波、双边滤波、2D卷积等操作。 OpenCV 图像平滑处理目录 1 均值滤波 2 方框滤波 3 高斯滤波 4 中值滤波 5 双边滤波 6 2D卷积(自定义…

电子技术——分立MOS放大电路

电子技术——分立MOS放大电路 有了前两节的学习,即三种放大器配置和偏置方法之后,我们可以通过现成的分立晶体管、电阻、电容等搭建分立MOS放大电路。 DC偏置基本结构 在本节我们选用的DC偏置基本结构是如图所示的源极恒流源的偏置方案,下图…

用#define宏实现Add函数

✋作者:阿润菜菜 📖专栏:C语言 我们知道#define宏是一种非常暴力的替换,宏定义会在程序编译预处理阶段在调用宏的位置进行文本内容的直接替换,因此我们在使用宏定义实现Add加法函数时就要注意一些可能会报错的问题。 …

第九层(10):STL之函数对象

文章目录前情回顾函数对象概念特点谓词概念内建函数对象分类算术仿函数关系仿函数逻辑仿函数下一座石碑🎉welcome🎉 ✒️博主介绍:一名大一的智能制造专业学生,在学习C/C的路上会越走越远,后面不定期更新有关C/C语法&a…

你是如何学习 Java 的?

每一个行业中能成为大佬的人,一定都有他自己一套具有独到见解的方法...... 这个问题我很有发言权,从刚毕业做Java实习生月薪2k,到现在干了5年Java开发月薪43k,一直都在保持不断学习的状态。以我个人的经验来看,一个程…

视频分割新范式:视频感兴趣物体实例分割 VOIS

1. 背景视频中物体分割是视频理解的基础算法,也是对淘宝商品视频分析和加工所依赖的重要能力。传统的视频分割任务一般分为两种类型:一种是VOS(Video Object Segmentation),该任务需要在第一帧给出物体的初始分割标注&…

Linux系列 目录和文件管理

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 简介 本章重点 一.检查文本内容 ​编辑 1.cat命令——显示并…

MySQL分表查询之Merge存储引擎实现

概念介绍 MySQL 分表之后怎么进行联合查询?用有表数量限制的 union all,还是汇总到一张表再查询,亦或用Sphinx( 高性能SQL全文检索引擎 )? 在这篇文章里,介绍使用 Merge [mɜːrdʒ] 存储引擎…

浅读人月神话(2)

读书笔记:今日翻书浅读,从《为什么巴比伦塔会失败》开始至《干将莫邪》结束,巴比伦塔的建造对当下项目推进有广泛借鉴意义,今天这几个章节在PMBOK中有一些可以互相对照学习的内容,《为什么巴比伦塔会失败?》…

荔枝派 zero 使用 Jlink 调试

Jlink 所谓硬件版本,就是这个调试器的硬件是第几代,我手上的这个是 V8 所谓固件版本,就是这个调试器主芯片中内置的软件是什么版本,我刷入的是 J-Link ARM V8 compiled Nov 28 2014 13:44:46 所谓 Jlink 工具版本,就…