设计本网站做返利网站能赚钱

bicheng/2026/1/23 22:13:36/文章来源:
设计本网站,做返利网站能赚钱,怎样在文章后做网站链接,域名买了之后如何建设网站glide性能优化实战 前言 项目使用glide加载图片之前也只是会基本api,这次项目有非常多的图片需要展示#xff0c;而且设备是一个android12的版本#xff0c;但是性能不太理想#xff0c;分给APP的资源不太多#xff0c;所以需要优化现有图片加载逻辑#xff0c;读者可以…glide性能优化实战 前言 项目使用glide加载图片之前也只是会基本api,这次项目有非常多的图片需要展示而且设备是一个android12的版本但是性能不太理想分给APP的资源不太多所以需要优化现有图片加载逻辑读者可以根据自己的项目自行选择优化项。 关于Glide的简单介绍 Glide是一个快速高效的Android图片加载库注重于平滑的滚动。Glide提供了易用的API高性能、可扩展的图片解码管道decode pipeline以及自动的资源池技术。 Glide 支持拉取解码和展示视频快照图片和GIF动画。Glide的Api是如此的灵活开发者甚至可以插入和替换成自己喜爱的任何网络栈。默认情况下Glide使用的是一个定制化的基于HttpUrlConnection的栈但同时也提供了与Google Volley和Square OkHttp快速集成的工具库。 虽然Glide 的主要目标是让任何形式的图片列表的滚动尽可能地变得更快、更平滑但实际上Glide几乎能满足你对远程图片的拉取/缩放/显示的一切需求。 API Glide 使用简明的流式语法API这是一个非常棒的设计因为它允许你在大部分情况下一行代码搞定需求 Glide.with(context).load(url).into(imageView);性能 Glide 充分考虑了Android图片加载性能的两个关键方面 图片解码速度解码图片带来的资源压力 为了让用户拥有良好的App使用体验图片不仅要快速加载而且还不能因为过多的主线程I/O或频繁的垃圾回收导致页面的闪烁和抖动现象。 Glide使用了多个步骤来确保在Android上加载图片尽可能的快速和平滑 自动、智能地下采样(downsampling)和缓存(caching)以最小化存储开销和解码次数积极的资源重用例如字节数组和Bitmap以最小化昂贵的垃圾回收和堆碎片影响深度的生命周期集成以确保仅优先处理活跃的Fragment和Activity的请求并有利于应用在必要时释放资源以避免在后台时被杀掉。 关于Glide的初步优化 上面都是官网的介绍下面我们进行初步的一个优化。 缓存策略 首先是图片的缓存策略。几个可配置的缓存策略属性在DiskCacheStrategy类中都有介绍 NONE 不使用缓存每次都重新加载 DATA 在解码之前将检索到的数据直接写入磁盘缓存。 RESOURCE 在解码后再将检索到的数据写入磁盘缓存。 AUTOMATIC 尝试根据DataFetcher和EncodeStrategy中的ResourceEncoder如果ResourceEncoder可用的话的数据源智能地选择策略。 ALL 如果是远程数据使用DATA和RESOURCE缓存如果是本地数据使用RESOURCE缓冲。 项目加载的都是本地图片所以在加载速度和缓存大小的权衡下使用了RESOURCE ... .diskCacheStrategy(DiskCacheStrategy.RESOURCE) ...图片裁剪 因为缓存大小跟图片大小是有直接关系的所以加载前最好将其裁剪为和控件大小一致避免过大的图片造成ANR和Out Of Memory ... .override(your size) ...移除加载动画 Glide为了保证图片加载的过度流畅性不显得突兀是有默认的动画和变换的但这也会消耗一定的性能所以我们将它关闭 ... .dontAnimate() .dontTransform() ...其他 可选如果需要在加载过程中对图片进行处理可以使用RequestListener 初步结果 都加上过后大概是这个样子 Glide.with(context).load(url).override(your size).dontAnimate().dontTransform().diskCacheStrategy(DiskCacheStrategy.RESOURCE).into(imageView);可以从Profiler中看到加载一个list的图片时内存和CPU都有下降。 关于Glide的AppGlideModule定制 在新版Glide中可以通过自定义AppGlideModule来全局定义glide的设置 import android.content.Context import com.bumptech.glide.Glide import com.bumptech.glide.GlideBuilder import com.bumptech.glide.Registry import com.bumptech.glide.annotation.GlideModule import com.bumptech.glide.load.DecodeFormat import com.bumptech.glide.load.engine.bitmap_recycle.LruArrayPool import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool import com.bumptech.glide.load.engine.cache.DiskLruCacheWrapper import com.bumptech.glide.load.engine.cache.LruResourceCache import com.bumptech.glide.load.engine.cache.MemorySizeCalculator import com.bumptech.glide.load.engine.executor.GlideExecutor import com.bumptech.glide.module.AppGlideModule import com.bumptech.glide.request.RequestOptions import com.fawvw.hmi.media.common.utils.LogUtil import java.io.FileGlideModule class MyAppGlideModule : AppGlideModule() {private val TAG MyAppGlideModule//图片文件缓存 10Mprivate var IMAGE_CACHE_COUNT 10 * 1024 * 1024private val SOURCE_EXECUTOR_NAME sourceprivate val ANIMATION_EXECUTOR_NAME animationoverride fun applyOptions(context: Context, builder: GlideBuilder) {super.applyOptions(context, builder)val calculator MemorySizeCalculator.Builder(context).build()val defaultMemoryCacheSize calculator.memoryCacheSizeval defaultBitmapPoolSize calculator.bitmapPoolSizeval defaultArrayPoolSize calculator.arrayPoolSizeInBytesLogUtil.d(TAG,defaultMemoryCacheSize: $defaultMemoryCacheSize, defaultBitmapPoolSize: $defaultBitmapPoolSize, defaultArrayPoolSize: $defaultArrayPoolSize)builder.setDefaultRequestOptions(RequestOptions().format(DecodeFormat.PREFER_RGB_565))val cacheLocation File(context.externalCacheDir, GlideCache)if (!cacheLocation.exists()) {cacheLocation.mkdirs()}//设置glide文件缓存为10Mbuilder.setDiskCache {DiskLruCacheWrapper.create(cacheLocation, IMAGE_CACHE_COUNT.toLong())}//设置glide内存,bitmap池,数组池砍builder.setMemoryCache(LruResourceCache((defaultMemoryCacheSize / 4).toLong()))builder.setBitmapPool(LruBitmapPool((defaultBitmapPoolSize / 4).toLong()))builder.setArrayPool(LruArrayPool(defaultArrayPoolSize / 4))//设置Source线程最大数量为1builder.setSourceExecutor(GlideExecutor.newSourceBuilder().setThreadCount(1).setName(SOURCE_EXECUTOR_NAME).build())//设置Animation线程最大数量为1builder.setAnimationExecutor(GlideExecutor.newAnimationBuilder().setThreadCount(1).setName(ANIMATION_EXECUTOR_NAME).build())}override fun registerComponents(context: Context, glide: Glide, registry: Registry) {super.registerComponents(context, glide, registry)} }编译过后就可以调用GlideApp了用于将Glide替换掉注意别忘了添加GlideModule注解。 总结 在进行了上面的两个定制过后CPU和内存都有明显的下降但是有些配置确实会导致加载速度变慢和用户体验变差需要自己权衡。

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

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

相关文章

涂料增稠剂移动网站建设公司食品网站策划

目录 序言向量的定义线性组合、张成空间与向量基线性变换和矩阵线性复合变换与矩阵乘法三维空间的线性变换行列式矩阵的秩和逆矩阵维度变换点乘叉乘基变换特征值和特征向量抽象向量空间 序言 欢迎阅读这篇关于线性代数的文章。在这里,我们将从一个全新的角度去探索线…

网站主页的要素深圳市罗湖区住房和建设局网站

hive管理之ctl方式 hivehive --service clictl命令行的命令 #清屏 Ctrl L #或者 ! clear #查看数据仓库中的表 show tabls; #查看数据仓库中的内置函数 show functions;#查看表的结构 desc表名 #查看hdfs上的文件 dfs -ls 目录 #执行操作系统的命令 !命令…

珠海网站建设在哪里网站能用到管理后台上吗

Transformer目录:《Transformer Paper》1.0 CV Transformer必读论文5篇_汉卿HanQ的博客-CSDN博客 前文参考:Transformer1.0-预热_汉卿HanQ的博客-CSDN博客 全文1w3字左右,按照论文翻译个人理解精读,如果对你有所帮助,欢迎点个赞哦&#xff…

做外贸的几个网站在线动画手机网站模板

目录 详解pytorch中各种Loss functions binary_cross_entropy 用途 用法 参数 数学理论 示例代码 binary_cross_entropy_with_logits 用途 用法 参数 数学理论 示例代码 poisson_nll_loss 用途 用法 参数 数学理论 示例代码 cosine_embedding_loss 用途 …

关键词搜索引擎工具爱站网络营销的主要特点有哪些

晚上学习,有台灯肯定比没台灯好。只要是盏合格的、能用的台灯,都能给你一个稳定又亮堂的环境。但是有些不合格的台灯会给眼睛带来伤害,尤其是学习负担比较重的学生。那有哪些台灯是学生用着比较好用的呢? 一、学生使用护眼台灯的…

网站建设推广软件有自己的网站如何做淘宝客

具体来说,OpenGL是一个开放的图形库,它规定了每个函数应该如何执行,以及它们的输出值,但没有具体实现。它提供了渲染2D和3D图形的标准或规范。 GLEW,全称OpenGL Extension Wrangler Library,是一个用于管理…

网站优化 方案如何做虚拟币交易网站

1、public —— 外部也能访问 2、private —— 只能内部(友元也可以) 3、explicit —— 只可用于声明単参构造函数。声明类的构造函数是显示调用,不是隐式。阻止调用构造函数时隐式转换(赋值初始化) 4、默认构造函数…

太原网站设计费用制作商城网站

下面是一个简单的 Python TCP 客户端示例代码,用于与之前提到的 EchoServer 进行通信: import socketserver_address (localhost, 8888)# 创建 TCP 客户端套接字 client_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:# 连接到服务器…

wordpress建站平台wordpress建设购物网站

众所周知&#xff0c;MySQL是非常重要的数据库语言&#xff0c;下面我们来回顾一下mysql的增删查改吧 MySQL创建数据库&#xff1a; CREATE DATABASE 数据库名;MySQL删除数据库&#xff1a; DROP DATABASE <database_name>; --直接删除&#xff0c;不检查是否存在 DROP…

拆分盘网站建设网站地图用法

前言&#xff1a; 小弟能力不足&#xff0c;认知有限&#xff0c;难免考虑不全面&#xff0c;希望大佬能给出更好的建议&#xff0c;指出存在的问题和不足&#xff0c;在此跪谢。 IO发展史 Java中对于I/O能力的支持主要分为三个比较关键的阶段&#xff1a; BIO 第一个阶段…

企业网站建设 全包吉林省城乡建设厅网站6

关于串的相关定义&#xff1a; 串&#xff1a;用‘ ’表示的字符序列空串&#xff1a;包含零个字符的串子串&#xff1a;包含传本身和空串的子串 eg: abc(,a,b,c,ab,bc,ac,abc)共7个&#xff1a;串的长度的阶乘1&#xff08;空串&#xff09;真子串&#xff1a;不包含自身的所…

萧山建设局网站线上问诊网站建设

前言 最近对部分项目升级了vue-cli脚手架&#xff0c;记录一下 问题一&#xff1a; scss/less/css中无法引入public下的静态资源 问题描述 在样式文件中使用静态资源路径导致编译无法通过 错误信息如下&#xff1a; Module not found: Error: Cant resolve /img/login/lo…

优酷wordpress建站教程杭州设计公司老板被点火

题目 105. 从前序与中序遍历序列构造二叉树 分析 这道题是告诉我们一颗二叉树的前序和中序&#xff0c;让我们根据前序和中序构造出整颗二叉树。 拿到这道题&#xff0c;我们首先要知道前序的中序又怎样的性质&#xff1a; 前序&#xff1a;【根 左 右】中序&#xff1a;…

快速建站教程如何建设运输网站

【嵌入式——QT】全局定义 概念数据类型定义函数宏定义 概念 头文件包含了Qt类库的一些全局定义&#xff0c;包含基本数据类型、函数和宏&#xff0c;一般的Qt类的头文件都会包含该文件&#xff0c;所以不用显示包含这个头文件也可以使用其中的定义。 数据类型定义 数据类型…

html5风格网站特色瑞安门户网站建设

可能你对值类型和引用类型还不太了解。 值类型和引用类型&#xff0c;是c#比较基础&#xff0c;也必须掌握的知识点&#xff0c;但是也不是那么轻易就能掌握&#xff0c;今天跟着我一起来看看吧。 典型类型 首先我们看看这两种不同的类型有哪些比较典型的代表。 典型值类型…

福州建设高端网站wordpress文本地化

文章目录 文章专栏前言文章解读前言创建ROI案例1&#xff1a;直接截取ROI手动截取ROI 总结ROI套路获取窗口句柄截取ROI区域获取有效区域 Stop组合 文章专栏 Halcon开发 Halcon学习 练习项目gitee仓库 CSDN Major 博主Halcon文章推荐 前言 今天来看第三章内容&#xff0c;既然是…

阳江市建设网站百度怎么推广自己的产品

二叉树的存储与遍历 const int N 1e6 10;// 二叉树的存储,l数组为左节点,r数组为右结点 int l[N], r[N]; // 存储节点的数据 char w[N]; // 节点的下标指针 int idx 0;// 先序创建 int pre_create(int n) {cin >> w[n];if (w[n] #) return -1;l[n] pre_create(idx)…

wordpress单本小说站机加工接单什么平台好

面试题45&#xff1a;C中的字符串如何存储 在C中&#xff0c;字符串可以通过多种方式存储&#xff0c;但最常见和推荐使用的方式是通过 std::string 类&#xff0c;该类位于 <string> 头文件中。std::string 是一个类模板的实例&#xff0c;通常用于存储字符数组&#x…

做网站的知名品牌公司网页设计建网站

PHP加密解密也是常有的事&#xff0c;发现discuz论坛里的PHP加密解密处理类代码&#xff0c;感觉挺不错&#xff0c;在用的时候&#xff0c;要参考Discuz论坛的passport相关函数&#xff0c;后面我会附上使用方法。php加密解密处理类<?php /* 文件名称&#xff1a;cls.sys_…

广州应用网站设计湖州市建设中心网站

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章我们详细讲解c中的动态内存管理 目录 1.C/C内存分布2.C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free3.c内存管理方式3.1new/delete对内…