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

企业网站颜色免费浏览的网站

企业网站颜色,免费浏览的网站,网页qq登录电脑版,做软件下载网站文章目录 一、问题背景二、代码实现 一、问题背景 经常做 Android 应用的小伙伴应该会有经验,就是如果应用在写入文件的时候,即使写文件的动作是在子线程,也会出现 UI 上的卡顿,这是因为文件的 IO 是由内核去完成的,此…

文章目录

  • 一、问题背景
  • 二、代码实现

一、问题背景

经常做 Android 应用的小伙伴应该会有经验,就是如果应用在写入文件的时候,即使写文件的动作是在子线程,也会出现 UI 上的卡顿,这是因为文件的 IO 是由内核去完成的,此时 CPU 会从 用户态 切换到 内核态,应用将无法获得 CPU 时间片。如果 IO 较少的时候,这个切换不频繁,应用能有足够的时间片去执行绘制。但如果 IO 频繁,例如高速写入的场景下,此时 IO 占用的时间片增加,而我们知道 CPU 资源是有限的,此时会导致应用获得 时间片 将减少,导致 UI 绘制线程出现卡顿,进而影响 UI 上的卡顿。

我们可以使用 top 命令,查看 IO 占用 CPU 的时间片(即 iow):
在这里插入图片描述

因此,如果不能从其它方式去解决此问题(内核层的 IO 调度 和 CPU 调度机制),可以运用简单的方式:在写入文件的时候,限制写入速度,减缓 IO 占用率。

二、代码实现

例如,一个标准的拷贝文件的 Kotlin 方法如下:

originFile.inputStream().buffered().use { inputStream ->targetFile.outputStream().buffered().use { outputStream ->val buffer = ByteArray(1024)var bytesRead: Intwhile (inputStream.read(buffer).also { bytesRead = it } != -1) {outputStream.write(buffer, 0, bytesRead)}outputStream.flush()}
}

这个方法对 源文件 开启了 InputStream,并转换为 BufferInputStream,而对 目标文件 开启了 OutputStream,并转换为 BufferOutputStream,然后再从 InputStream 读取流,输出到 OutputStream,完成文件的读写。

而我们为了实现限制其写入速度,我们可以定义一个速率,例如每秒写入 20M,即每秒写入的字节数为 20 * 1024 * 1024 = 20, 971, 520 。在每次写入量达到 20M 的时候,检查一次写入这 20M 使用的时长,如果这个时长 < 1s ,则表示在这 1s 的时间里,写入的速率已经超过了 20M,需要等待一定时长,使其满足 1s 内只写入 20M 的需求。代码如下:

// 限制拷贝时的速率, 每秒最多拷贝的字节数
val MAX_COPY_SPEED = 20 * 1024 * 1024L// 记录已拷贝的文件大小
var copiedSize = 0L// 记录上次检查性能的时间 (用来计算拷贝速率 限制拷贝速率)
var lastCheckPerformanceTime = System.currentTimeMillis()
// 记录上次检查时 已拷贝的数据量
var lastCheckPerformanceSize = 0LoriginFile.inputStream().buffered(1024 * 1024).use { inputStream ->targetFile.outputStream().buffered().use { outputStream ->val buffer = ByteArray(DEFAULT_BUFFER_SIZE)var bytesRead: Intwhile (inputStream.read(buffer).also { bytesRead = it } != -1) {outputStream.write(buffer, 0, bytesRead)// 增加已拷贝文件的大小copiedSize += bytesRead// 计算拷贝速率 每满 MAX_COPY_SPEED 计算一次速率if (copiedSize - lastCheckPerformanceSize >= MAX_COPY_SPEED) {lastCheckPerformanceSize = copiedSizeval time = System.currentTimeMillis()// 计算写入 MAX_COPY_SPEED 字节数所使用的时间val deltaTime = time - lastCheckPerformanceTimelastCheckPerformanceTime = time// 如果速率大于 MAX_COPY_SPEED 则暂停 等待下次计算if (deltaTime < 1000) {// 延迟 1000 - deltaTime 使满足 1s 内只写入指定量delay(1000 - deltaTime)}}}outputStream.flush()}
}

文章转载自:

http://2Q6h8qhY.wwkfg.cn
http://WGUyj9NW.wwkfg.cn
http://GZ6AYMUk.wwkfg.cn
http://aNxB2i83.wwkfg.cn
http://fRchcmoJ.wwkfg.cn
http://M09LZ4ph.wwkfg.cn
http://RoczejNx.wwkfg.cn
http://V6dSHxtk.wwkfg.cn
http://SbBgwZym.wwkfg.cn
http://UJc9KIAe.wwkfg.cn
http://bI0hnMC5.wwkfg.cn
http://VUEfXN7K.wwkfg.cn
http://D2UgpBHI.wwkfg.cn
http://5GNJtnWN.wwkfg.cn
http://s02ToZbU.wwkfg.cn
http://On8GB9FZ.wwkfg.cn
http://x8klM9Sg.wwkfg.cn
http://9x17Im0t.wwkfg.cn
http://ZXCXDFHP.wwkfg.cn
http://Pz9FKj1L.wwkfg.cn
http://avX2ddc3.wwkfg.cn
http://TvRNdWA0.wwkfg.cn
http://8PsQ5Rhw.wwkfg.cn
http://JXabdPsE.wwkfg.cn
http://jCr69ZhC.wwkfg.cn
http://1yC07lGt.wwkfg.cn
http://aI93cDbu.wwkfg.cn
http://nAuYMyU8.wwkfg.cn
http://6u7xc93x.wwkfg.cn
http://eLv5KJ3m.wwkfg.cn
http://www.dtcms.com/wzjs/649819.html

相关文章:

  • 企业网站建设介绍做信息图的网站有哪些
  • 青岛网站建设有哪些公司给公司做网站 优帮云
  • 福州智能建站给别人做网站做什么科目
  • 旅游网站设计分析网站建设工作室07fly
  • asp网站开发网站框架类型
  • 南京做网站南京乐识最优网络营销策划有哪些
  • 响应式网站建设策划注册公司取名字
  • 美食健康网站的建设wordpress cdn 部署
  • 电子商务网站开发的任务书小程序外包
  • 网站前端设计培训开网店的流程和费用
  • 如何进入优容网站网站诊断与检测
  • 陶瓷网站开发背景漳州市长泰县建设局网站
  • 市住房和城乡建设局网站网页微博怎么发微博
  • 网站环境配置北京网站备案域名
  • 有免费可以做的网站吗有没有好的做海报的网站
  • 宁波网站开发建设公司云南网络推广报价明细
  • 广告网站建设网如皋网页设计
  • 新建的网站百度搜索不到中天建设集团有限公司广西分公司
  • 石家庄城市建设投资中心网站wordpress美化主题下载
  • 郑州网站开发的公司制作人漫画
  • 织梦 网站统计扬州推广公司
  • 南县网站制作直播做ppt的网站
  • 自己做图片的网站吗网络培训课堂app
  • ui设计师网站素材下载网站模板
  • 咸阳网站建设seo做网站全包
  • 阜新公司做网站怎么注册集团公司
  • 用ps做网站设计企业展馆策划公司
  • 可以做微信游戏的网站有哪些网站当地备案
  • 网站建设售价多少钱上海网站建设yuue
  • 手机网站制作优化房屋设计风格