Android面向面试复习----Bitmap

2023-11-11

Android中的Bitmap

1. recycle方法

  • 该方法是系统提供的,可以用来回收bitmap占用的堆内存以及native内存,同时清除该对象的引用。
  • 该操作不可逆,如果调用了recycle(),再次加载图片,则会抛出异常。所以,需要确保该图片不会被再次使用时才可以调用recycle
  • Android系统建议我们不要主动调用该方法,因为图片如果没有被引用的对象时,GC会主动释放图片占用的内存

2. LRU算法

它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除。

内部使用LinkedHashMap来缓存key-value的对应关系,提供put和get方法便于缓存内容的添加和获取。同时也提供remove方法删除key对应的value。当缓存达到预设值时,会调用trimToSize方法,把较早的缓存对象移除,以便存放新的缓存。

3. 计算inSampleSize

使用BitmapFactory去decode一张大图时,往往会发生OOM,所以,我们计算一个合适的sampleSize是减少图片加载内存的一个重要手段。首先,设置inJustDecodeBounds为true,decodeFile并不占用空间,但是可以拿到原图的宽高,即options.width和options.height,通过一定的计算,就能够计算出合适的inSampleSize。根据该值,可以少加载图片像素到内存中,自然内存占用就会减少。

4. 缩略图

换句话说,加载缩略图,是将一个稍大的图片,加载更小尺寸到内存,也就是用到了上面的inSampleSize。

5. 三级缓存

从网络上加载过一个图片之后,把原图或者所需的分辨率的图片缓存到文件或者内存中,再次加载该图片时只需从内存或者文件中读取,而不再需要从网络上获取,效率更高,更省内存。目前主流的图片加载框架都会有该部分逻辑(值得一提的是Glide会缓存原图和你用过的分辨率的图片,所以加载速度最快)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android面向面试复习----Bitmap 的相关文章

  • 2024备战春招Java面试八股文合集

    Java就业大环境仍然根基稳定 市场上有很多机会 技术好的人前景就好 就看你有多大本事了 小编得到了一份很不错的资源 建议大家可以认真地来看看以下的资料 来提升一下自己的核心竞争力 在面试中轻松应对面试官拿下offer 本文分享 Java后
  • 不看后悔系列!Android面试经验分享,附经典题库+答案解析

    前言 近期 许多同学向我咨询关于Android技术岗位的招聘事宜 希望能够在求职过程中更好地准备 以冲击大厂 拿到高薪 作为首批Android开发者 我十余年来一直深耕Android及移动互联网开发领域 拥有丰富的面试和实战经验 在此 我想
  • 面试了10几家软件公司测试岗位,做的面试题大盘点,重点大合集

    马上就是金三银四了 不知道小伙伴们有没有准备好呢 希望这篇文章的内容可以帮助到大家 另外文末给大家准备了资料 好几套面试题加学习资料等 需要自取 项目的测试流程 1 拿到需求文档后 写测试用例 2 审核测试用例 3 等待开发包 4 部署测试
  • Flutter完整开发实战详解(二、 快速开发实战篇)

    作为系列文章的第二篇 继 Flutter完整开发实战详解 一 Dart语言和Flutter基础 之后 本篇将为你着重展示 如何搭建一个通用的Flutter App 常用功能脚手架 快速开发一个完整的 Flutter 应用 我们的目标是 前言
  • 每天都很煎熬,领导派的活太难,真的想跑路了

    每天都很煎熬 领导派的活太难 真的想跑路了 人在江湖身不由己 无论是领导的亲信还是团队的边缘 都可能遇到这种情况 不得不干一件特别难以推进的事情 茫然无措 不知如何推进 每天陷入焦虑和自我怀疑中 这种事情一般有一些共同特点 结果和目标极其模
  • 职言|三年功能测试,一些测试工作的“吐槽”

    概述 社区里大部分都是测试开发的分享 作为功能测试 我也分享下日常工作中功能测试值得吐槽的问题 由于工作时间不长且未进过大厂 不了解大公司的工作模式和流程 所以自己的方法和理解都是基于中小公司的工作经验总结 应该适用于跟我一样的小白 没有各
  • 测试工程师都是怎么写测试用例的?浅谈测试用例的编写思路和执行

    性能测试 压力测试 负载测试 强度测试 稳定性测试 健壮性测试 功能测试 系统测试 集成测试 接口测试 这么些眼花缭乱的测试类型名称 估计很少有有人能准确地区分和说出定义来 对应的测试用例如何编写和执行 就更不容易进行了 如果问测试工程师测
  • 自动化测试面试题(附答案)

    1 自动化代码中 用到了哪些设计模式 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2 什么是断言 Assert 断言Assert用于在代码中验证实际结果是不是符合预期结果 如果测试用例执行失败会抛出异常并提供断
  • 164页,2023新版《Java面试手册》,抓住机会向前冲

    小伙伴们 2023新版 Java面试手册 来啦 这本小册子总计164页 全都是面试中的高频题目 有兴趣的小伙伴们不妨来看一下 为上岸做一下准备 由于全部内容过多 下面截取部分内容截图 大家可以先来大体看一下 Java基础 由于平台文章篇幅限
  • hw蓝队初级的一次面试(基础)

    OWASP top10 1 失效的访问控制 越权 2 加密失败 3 注入 4 不安全的设计 5 安全配置错误 6 易受攻击和过时的组件 7 认证和授权失败 8 软件和数据完整性故障 9 安全日志记录和监控失效 10 服务端请求伪造 ssrf
  • 系统有万亿条消息怎么存储?

    系统有万亿条消息怎么存储 本文转自 公众号 ByteByteGo 如有侵权 请联系 立即删除 我们如何设计一个能存储数万亿条信息的系统 Discord 的消息存储演进给我们提供了真实案例参考 下图显示了 Discord 消息存储的演变过程
  • 八股文打卡day20——操作系统(3)

    面试题 线程同步的方式有哪些 我的回答 多线程同时访问和修改某个数据的话 会造成数据的不一致和冲突问题 所以就需要线程同步 线程同步的方式有 1 互斥锁 互斥锁就是 当一个资源被访问和操作时 会对这个资源加锁 把这个资源锁定 其他线程不能对
  • 校招失败后,在小公司熬了 2 年终于进了字节跳动,竭尽全力....

    其实两年前校招的时候就往字节投了一次简历 结果很明显凉了 随后这个理想就被暂时放下了 但是这个种子一直埋在心里这两年除了工作以外 也会坚持写博客 也因此结识了很多优秀的小伙伴 从他们身上学到了特别多东西 把这次面试分享出来 也是希望可以帮助
  • 工作五年,一年内我靠这系列java面试宝典从13K到大厂30K

    我认为对于面试以及进阶最佳的学习方法莫过于 刷题 博客 书籍 总结 前三者我将淋漓尽致地挥毫于这篇文章中 至于总结要靠个人 实际上越到后面你越会发现面试并不难 其次就是在刷题的过程中有没有去思考 刷题只是次之 这又是一个层次了 这里暂时不提
  • 真的干不过,00后整顿职场已经给我卷麻了,想离职了...

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 2024年最热门的15个科技工作岗位

    1 系统安全管理员 系统安全管理员的任务是确保公司的网络 数据和系统免受网络安全威胁 方法是确保有适当的安全战略并保持最新的合规性和策略 要求 应聘者应具有网络安全职位的工作经验 并对合规性和安全协议的最佳实践有坚实的基础 这个职位通常需要
  • Android Navigation的四大要点你都知道吗?

    在JetPack中有一个组件是Navigation 顾名思义它是一个页面导航组件 相对于其他的第三方导航 不同的是它是专门为Fragment的页面管理所设计的 它对于单个Activity的App来说非常有用 因为以一个Activity为架构
  • 不要再苦苦寻觅了!AI 大模型面试指南(含答案)的最全总结来了!

    AI 大模型技术经过2023年的狂飙 2024年必将迎来应用的落地 对 IT 同学来讲 这里蕴含着大量的技术机会 越来越多的企业开始招聘 AI 大模型岗位 本文梳理了 AI 大模型开发技术的面试之道 从 AI 大模型基础面 AI 大模型进阶
  • Synchronized 锁机制

    为了避免临界区的竞态条件发生 可以用非阻塞式的原子变量 也可以用阻塞式的锁 Java 多线程的锁都是 对象锁 采用互斥的方式让同一时刻只有一个线程能够持有对象锁 从而进入临界区 而其它线程只能阻塞等待 因此不用担心线程上下文切换造成共享资源
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自

随机推荐

  • cumsum() R函数:用于产生随机变量的累积和

    gt 1 4 1 1 2 3 4 gt cumsum 1 4 1 1 3 6 10 函数介绍 Returns a vector whose elements are the cumulative sums cumsum 函数 Cumulat
  • python中import re_彻底搞懂Python 中的 import 与 from import

    对不少 Python 初学者来说 Python 导入其他模块的方式让他们很难理解 什么时候用import xxx 什么时候用from xxx import yyy 什么时候用from xxx yyy import zzz 什么时候用from
  • 又搞定一块屏幕 micropython 驱动 sharp memory lcd

    先来学学C是怎么写的 核心代码 void lcd refresh void uint16 t i 0 ln 0 SCS 1 delay us 5 write byte 0x80 for ln 0 ln lt 128 ln write byt
  • AI人流量统计算法,让公众场所人群管控更简单

    为强化疫情防控 公众场所时常需要调整人数上限 高效快捷限制人群聚集 减少疫情传播风险 以往的方式是投入大量人力在出入口设置门岗 对出入人员进行现场管理 统计及控制进出人流数量 基于区域人流量统计技术模型 快瞳科技 人流量统计检测算法 为疫情
  • 788. 旋转数字

    788 旋转数字 我们称一个数 X 为好数 如果它的每位数字逐个地被旋转 180 度后 我们仍可以得到一个有效的 且和 X 不同的数 要求每位数字都要被旋转 如果一个数的每位数字被旋转以后仍然还是一个数字 则这个数是有效的 0 1 和 8
  • 田志刚:企业知识管理的知识传播

    知识管理本身的知识传播是知识管理在国内发展的一个重要课题 虽然我们都认为知识管理有价值 但更多的人不知道 所以如何让更多的人知道KM 理解并知道如何实践就成为知识管理的知识传播的重要内容 知识管理的知识传播可以分两个层面 一个层面是对于社会
  • VMware Workstation Pro 16 安装win7

    本文使用U盘工具创建 至于为什么安装win7 毕竟很多游戏在win10已经没法玩了 1 创建虚拟机 典型创建即可 2 添加硬盘 SCSI类型 使用物理磁盘 物理驱动2 使用整个磁盘 这里的驱动2就是U盘 创建完成 这时候应该是正在使用该设备
  • python高级知识之常用的魔术方法

    文章目录 1 init 魔术方法 2 new 魔术方法 3 str 魔术方法 4 del 魔术方法 5 call 魔术方法 6 len 魔术方法 7 eq 魔术方法 8 hash 魔术方法 9 getitem 魔术方法 10 setitem
  • 解决 vs code 搜索中文结果异常的问题

    文章目录 一 引言 二 解决 一 引言 最近在工作中遇到了一个很诡异的问题 在使用 vs code 过程中 发现 ctrl f 搜索一个项目文件夹中的结果的时候 搜索数字没有问题 能出来结果 但是搜索中文就会出不来结果 明明确认是有相关中文
  • lapack++与sba的编译问题

    最近在研究老外写的sba的程序 从http users ics forth gr lourakis sba 下载的sba程序是源代码 并没有编译 按照http blog csdn net royalvane article details
  • Apache Tomcat 8.5解压版在Win10系统安装详细过程说明

    目录 引言 一 操作环境 二 Tomcat安装 1 Tomcat安装版介绍 2 Tomcat解压版 绿色版 安装与环境变量配置 1 下载Tomcat8 5解压版压缩包 2 对压缩包进行解压 3 配置环境变量 CATALINA HOME 和
  • Docker基本知识笔记(五)--Docker Swarm

    目录 一 工作模式 二 搭建集群 三 Raft协议 四 Docker Stack 五 总结 一 工作模式 主要是分成两种节点 一个管理节点 一个工作节点 操作在管理节点上 二 搭建集群 四台阿里云服务器 1 配置管理节点 配置自己的ip地址
  • 高德地图弹框引用VUE组件

    1 高德地图版本 2 0 2 实现效果 3 代码如下 地图页面代码 var infoWindow new SimpleInfoWindow 基点指向marker的头部位置 offset new AMap Pixel 0 10 params
  • jdbc 连接Oracle RAC

    jdbc连接oracle的连接串如下 String url jdbc oracle thin DESCRIPTION ADDRESS PROTOCOL TCP HOST host2 PORT 1521 ADDRESS PROTOCOL TC
  • PowerDesigner165安装

    PowerDesigner安装及解析 一 PowerDesigner安装 1 双击开始安装 2 一路 Next 3 选择地区 4 安装路径 5 按图勾选 6 一路 Next 7 安装中 8 安装完成 二 解析 三 使用 一 PowerDes
  • MySQL 是怎样使用的:从零蛋开始学习 MySQL

    小册介绍 不论您是Javaer Phper Goer Pythoner 只要您是敲业务代码的 就离不开数据库 而MySQL凭借着它还不错的性能 还不错的稳定性常年稳居数据库排行榜老二宝座 当然最大的优势就是它不要钱 还开源 这让它成为大部分
  • Web自动化测试02:Web自动化测试工具选择大全

    系列文章目录 软件测试功能到自动化学习路线图 2022年最新版技术栈 软件测试01 从了解测试岗位职能和测试流程开始 附作业 软件测试02 6大实际案例手把手教你设计测试点 软件测试03 用例执行以及缺陷管理的学习 附禅道下载使用流程 软件
  • 三维点云质心与三角化 — python open3d

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 1 质心介绍 质心概
  • C语言进阶(程序环境和预处理)

    目录 前言 一 程序的翻译环境和运行环境 1 程序的翻译环境 链接阶段 2 执行环境 运行环境 二 预处理详解 1 预定义符号 2 define定义标识符 3 define定义宏 define 替换规则 和 两个预处理的工具 4 带副作用的
  • Android面向面试复习----Bitmap

    Android中的Bitmap 1 recycle方法 该方法是系统提供的 可以用来回收bitmap占用的堆内存以及native内存 同时清除该对象的引用 该操作不可逆 如果调用了recycle 再次加载图片 则会抛出异常 所以 需要确保该