当前位置: 首页 > news >正文

网站建设与规划的文献网站建设能赚很多钱

网站建设与规划的文献,网站建设能赚很多钱,兰州网站设计,湖南网页制作作者#xff1a;Yj家的孺子牛 流畅性优化 主线程模型 了解 Android 的流畅性优化之前#xff0c;我们需要先了解Android的线程结构。在 Android 中#xff0c;有一个主线程模型#xff0c;其中所有的绘制以及交互都是在主线程中进行的#xff0c;所以#xff0c;当我们… 作者Yj家的孺子牛 流畅性优化 主线程模型 了解 Android 的流畅性优化之前我们需要先了解Android的线程结构。在 Android 中有一个主线程模型其中所有的绘制以及交互都是在主线程中进行的所以当我们编写的某类代码是需要在主线程中运行的那么这类代码必然会影响到我们的绘制等继而影响到流畅性问题。 下图之中展示了我们哪类代码操作代码是会影响到主线程。 System Events(系统事件) 例如需要关闭、开启某个页面这些都是需要通知我们的系统的来完成的这些就是系统事件。它会触发到主线程的耗时操作。 Input Events(输入事件) 输入事件并非指单纯的在输入框输入信息的事件而是在手机上进行操作。因为手机本身可以被抽象的指代为一个输入输出的设备。在触摸屏上任意的点击都是一个输入事件它都是在主线程中完成的 Application(应用事件) 我们APP的启动都是要经过应用事件而各种生命周期的初始化相关的回调、初始化也是要经过它。例如各类启动的 SDK 都是放在 Application 类中初始化的这都是要在主线程中进行的。 Services(服务事件) 这一点大家也许有点疑惑后台服务为什么会是在主线程的呢我们不是一般新开一个线程在后台执行耗时任务的么上述的两点其实是不矛盾的只是我们平时的理解也许有误认为 Services 作为后台任务就是在子线程才对。但事实上 Services 是运行在主线程中的即使它是在后台执行的而我们需要执行耗时任务的时候再在 Services 中创建子线程来执行这个耗时任务 。 Alarm(定时事件) 定时事件中由于它默认子线程是不安全的主线程才是安全的所以是需要到主线程去执行的。 而 UI绘制 虽然是在主线程中的但是我们的代码是无法去控制它的这是系统进行控制的。我们只能输入需要绘制什么但是不能影响其绘制的流程。 界面更新以及卡顿 界面更新的VSync 知晓主线程模型后我们来看一下 界面是如何刷新 的 下面的一图是介绍 Android 中的 VSync 机制VSync 我们可以简单的理解为是一种屏幕刷新的信号它会每隔一段时间就会刷新一次屏幕。 **垂直同步VSync**当屏幕从缓冲区扫描完一帧到屏幕上之后开始扫描下一帧之前发出的一个同步信号该信号用来切换前缓冲区和后缓冲区。 如下图UI Draw 会在 16ms 就执行一次所以我们的需要让我们的绘制流程在 16ms 内执行完才不会出现卡顿问题。 所以说如果我们不影响界面的更新让每次绘制流程都可以保持在16ms以下那么就不会出现卡顿问题了。 三类主要的卡顿以及其原因 输入事件无法即时响应 这类卡顿主要表现为我们滑动屏幕的时候屏幕根本无法响应。这是由于我们在主线程中执行了一段非常耗时的、与事件无关的代码而由于这段代码还在执行所以输入事件根本没法执行也没法绘制出我们的滑动效果了。 输入事件立刻响应但其耗时较长 这类卡顿中输入事件是立即响应的了但是由于我们又在输入事件的分发中做了很多计算逻辑等耗时的操作所以还是会出现卡顿。其表现出来的效果是滑动的时候一卡一卡的这是由于输入事件的执行超过了16ms了导致了丢帧的问题。 UI Draw 之外需要在主线程中执行的任务耗时长 我们知道主线程中不单只有 UI 的绘制任务还有其他的例如 Application 任务也是需要放置在主线程中执行的。这些任务如果不做处理也一股脑的放置在主线程中执行那么也会导致其占用时间过长使得 APP 出现丢帧的问题。 解决卡顿问题 我们现已经知道了三大类卡顿的原因其归结来说的原因就是主线程中出现了不必要的耗时操作导致最后主线程的UI绘制出现阻塞或者溢出。那么我们解决卡顿、做流畅性优化的方法也是很明确了那就是让主线程尽量只做交互(Input Event)以及刷新(UI Draw)。当然很多需要在主线程中的代码是无法避免的但是我们尽量使其缩小让所有的耗时代码都在子线程中运行这样子使得其减少丢帧能够更加的连贯顺滑。 没有VSync会怎么样 上述讲到了 VSync 的作用以及卡顿的原因和处理我们知道 VSync 信号可以用于同步刷新页面。那若是没有 VSync 信号我们的页面会出现什么样的问题 其实会出现画面撕裂。画面撕裂是什么呢如下图中红色框中的图面与上边出现了撕裂这种就是画面撕裂。其出现的原因是上一帧的页面还在绘制中下一帧页面就继续占用资源绘制了所以会出现几帧的页面同时绘制在一个页面中出现了画面撕裂感。 那为何映入 VSync 信号之后就不会有画面撕裂问题了呢 在显示一张图片的时候其流程为GPU进⾏渲染—帧缓存区⾥ —显示控制器—读取帧缓存区信息(位图) — 数模转化(数字信号处—模 拟型号) —(逐⾏扫描)显示。 正常的情况下显示器完全显示完一帧后帧缓存区更新一帧这样便不会有撕裂问题但事实并非如此。 当显卡输出帧的速度比显示器快显示器的处理速度跟不上显卡在显示器处理显卡丢过来的第1帧的时候第2帧就又到了帧缓存区已更新导致同一个画面同时出现1、2两帧撕裂就产生了 在没有 VSync 信号的时候一旦GPU渲染完后就会交由屏幕去将其绘制出来那么 CPU 和 GPU 处理的事件有长有短一旦两帧出现绘制冲突就会出现画面撕裂问题了。 所以说解决画面撕裂的核心是决定好数据的交换时机(绘制时机)由谁来控制。在绘制中不应该是 CPU 处理写入之后就立即绘制而应该是由屏幕渲染完一帧之后才去绘制绘制下一帧。然而屏幕不是控制器它无法控制什么时候进行绘制但是它可以传递 VSync 信号给 Android 系统借助 VSync 信号Android 就可以让 CPU 在新的一帧开始的时候立即处理显示问题了。 VSYNC 信号是由屏幕显示设备产生的并且以 60fps 的固定频率发送给 Android 系统Android 系统中的 SurfaceFlinger 接收发送的 VSYNC 信号。VSYNC 信号表明可对屏幕进行刷新而不会产生撕裂。 图片中未对 VSync 信号进行处理导致出现卡顿问题。 资源优化 资源是什么 资源指的是Android 手机的软件和硬件资源通俗意义上应用依赖于移动端的有限资源和系统规定的数值。例如功耗、存储、流量、系统参数、CPU、内存等。 我们对上述的资源进行优化的时候其并非无关联的、相互隔离的例如流量消耗大那么功耗消耗也会大内存和存储的消耗也会大。但是我们需要优化某一个点的时候是需要聚焦于其中这一点进行优化的。 当然我们使用的设备也是在不断地优化的但是并非说等着硬件的优化我们的软件能跑就行。对于资源优化我们追求的是利用最小的资源达到最好的效果这是很有挑战性对自我提升也很高的事情。 Android 能做哪些资源优化 上图中展示了对于当下技术特征的满意度我们会发现上述的点其实都不算高。无论是内存/存储、电量或者是流量等等方面都是需要我们继续优化的点。而右图指的是如果后台的进程如果很多的话使得内存占用很多导致前台的APP也会收到内存的限制变得卡顿。 上图中对音量的优化其实收益也是很大的。例如当下的自媒体平台抖音它就是在端侧进行了音量优化取得了很大的收益。因为每一个人拍视频的音量和背景嘈杂度都是不一样的所以我们需要在上传视频到平台的时候进行音量优化对各种音量进行优化、拟合到同一水平这样子可以使得用户在打开不同视频的时候视频的音量不会影响到用户的体验。 而对于亮度的优化可以使得我们的功耗降低节省手机有限的电量。上面左图可以看出深色模式对电量的影响是很显著的。而同时在优化亮度的时候我们也可以找出功耗与体验的平衡点使得功耗低的时候我们的体验感也是最好的。这一点可以在右图中看出。 稳定性优化 对于稳定性优化我们主要讲的点是 ANR而其他的崩溃等则是需要尽可能的抹去这里暂不做分析。ANR 是应用长时间处于阻塞状态的时候系统会触发 ANR 然后系统会询问是否需要强制退出或者继续等待。 ANR 存在的的原因是我们不能因为一个程序出现问题就使得整个手机无法使用。所以需要 ANR 来将错误的程序退出。而我们对其优化则需要尽可能的减少这种情况的出现使得用户被打断这是一种很不好的体验。 诊断 ANR 时需要考虑以下几种常见模式 应用在主线程上非常缓慢地执行涉及 I/O 的操作。应用在主线程上进行长时间的计算。主线程在对另一个进程进行同步 binder 调用而后者需要很长时间才能返回。主线程处于阻塞状态为发生在另一个线程上的长操作等待同步的块。主线程在进程中或通过 binder 调用与另一个线程之间发生死锁。主线程不只是在等待长操作执行完毕而且处于死锁状态。 系统级优化 对于 Android 系统Google 本身也对其系统做了很多重大的优化这些优化使得 Android 系统很多的问题得以解决很多使用体验变得更好。而这些优化的点我们可以作为今后的思路让我们对 APP 的优化有更广阔的思考让我们能发掘出更多的优化点和对其有更加深刻的思考 对于业务开发中我们很多时候都是使用到 Application 和 FrameWork 层但是需要真正做好性能优化我们需要了解到很多的 核心库 Kernel 层的原理这对我们自身来说也是正向的收益。 其实想要全面掌握好 Android 性能优化的话这些知识点你必须要有所了解如 内存优化、网络优化、卡顿优化、存储优化……等为了让大家一次都可以了解全所以将其整合成名为《Android 性能优化核心知识点手册》大家可以参考下 《APP 性能调优进阶手册》https://qr18.cn/FVlo89 启动优化 内存优化 UI优化 网络优化 Bitmap优化与图片压缩优化 多线程并发优化与数据传输效率优化 体积包优化 《Android 性能调优核心笔记汇总》https://qr18.cn/FVlo89 《Android 性能监控框架》https://qr18.cn/FVlo89
http://www.hkea.cn/news/14302432/

相关文章:

  • 链家在线网站是哪个公司做的网站管理系统是什么
  • 微网站建设方式甘肃省城乡建设局网站首页
  • 网站开发包含的项目和分工做自己的程序设计在线测评网站
  • 阜阳h5网站建设wordpress 同类文章
  • 公司自建网站需要多少钱软件开发公司税收优惠政策
  • 做网站图片广告推广怎么忽悠人的有没有做文创的网站
  • 太原网站科技公司创作平台
  • 渭南网站建设网站排名优化官方网站建设计划书
  • 家居网站建设咨询定制logo
  • 推销网站建设具备哪些知识搜索网站入口
  • 每天做任务得钱的网站如何分析百度指数
  • 做自己卖东西的网站wordpress+zhai主题
  • 企业网站php源码百度云搜索引擎入口盘多多
  • 公司网站哪个建的好jsp网站开发遇到问题
  • 网站维护和推广怎么实现网站注册页面
  • 网络推广建设期的网站国内最好的搜索引擎
  • 被黑的网站肇庆制作网站软件
  • 怎么免费弄网站电子公司logo设计
  • 企业建网站的费用礼品行业网站建设
  • 个人网站备案可以放什么内容深圳网站制作公司流程
  • 校园网站建设情况建设网站制作实训报告
  • 国外网站设计师郑州新闻头条最新消息
  • 网站论坛建设步骤网站下雪代码
  • 济南英文网站建设wordpress远程发布api
  • 军人运动会官方网站建设目标著名的办公室设计案例
  • 山东网络推广网站做网站公司宁波上市
  • 自主建站网站平台唐山seo推广公司
  • 宁波产品网站设计模板域名查询解析ip
  • 浑南区建设局网站长沙企业网站seo
  • 广西建设银行行号查询网站数据中心公司排名