Android 高效内存-图片内存使用优化

Android 高效内存-图片内存使用优化,第1张

内容整理自网络。

在做内存优化的时候,我们发现除了解决内存泄露问题,剩下的就只有想办法减少真实的内存占用。而在App中,大部分内存可能被我们占用了,所以减少的内存占用可以带来直接的效果。本文就简单介绍一张到底占用多少内存,我们先假设我们有一张时 600 800 的,占用空间大小假设是 100KB。

内存大小跟占用空间大小有什么关系?

占用空间的大小不是占用内存的大小,一些初学者可能会误解一下。占用空间是在磁盘上占用的空间,内存大小是加载到内存中占用的内存大小。两个只是单位是一样的,本质不是一个概念。

一张到底占用多少内存呢?(ARGB_8888编码)

1 占用内存的计算公式: 高度 宽度 一个像素占用的内存大小

2 所以上面的占用内存是:800 600 4 byte = 1875KB = 183M

上面的计算公式中,为什么是4byte呢?文章后面有总结哦

所在目录对内存的影响?

在Android中,的存放目录和手机的屏幕密度影响最终的大小,举个例子:

假设我们的放到 xhdpi 目录下,那么我们本文中的占用的内存大小如下:

屏幕密度为2的设备:800 600 4byte = 183M

屏幕密度为3的设备:800 15 600 15 4byte = 183 225M = 412M

所以,计算占用内存大小的时候,要考虑所在的目录跟设备密度,这两个因素其实影响的是的高宽,android会对进行拉升跟压缩。

总结

1 确实很占用内存,内存优化先考虑内存占用;

2 一定要避免使用大,这就是9图很有用的原因之一;

3 的大小对内存的影响是正比关系;

4 本文只是简单的告知读者怎么计算的内存大小。

大图: 440 336    小图: 220 168 资源目录: xhdpi

小图的高宽都是大图的1/2-->小图是原图的1/4

界面效果:

测试设备: Coolpad   8676-M01   51   density=20

测试前准备操作: 同一款设备,设置前后多次调用gc直到内存短时间内保持稳定不再变化

内存使用情况: 下图依次是 初始内存,大图内存,小图内存

大图占用内存: 1123 MB - 1066 MB = 057 MB

小图占用内存: 1081 MB - 1066 MB = 015 MB

大图小图内存关系: 015 MB 4 = 060 MB 约等于 057 MB (这是统计工具的误差,理论上就是相等的)

同样的方式在另外一台设备小米4c上得到的结果如下:

测试设备: Xiaomi   Mi-4c   V8210LXKCNDL   511   density=30

大图占用内存: 1322 MB - 1195 MB = 127 MB

小图占用内存: 1227 MB - 1195 MB = 032 MB

大图小图内存关系: 032 MB 4 = 128 MB 约等于 127 MB

结论: 由此可见大图比小图占用更多的内存,大小(分辨率)与占用内存成正比关系

备注: 在硬盘上占用的磁盘空间大小,与在内存中占用的内存大小完全不一样,不是一个概念,不要混淆

根据上文中大小与内存的关系,可以更加深刻的理解Android中9的作用,它不但能减少apk的体积,还能减少占用内存。

有些时候我们根本不需要,而是自己绘制背景,可以在自定义View的onDraw中绘制背景,当然最方便的还是使用系统的Drawable,绘制部分交给系统去完成。

下面测试与Drawable的内存占用对比

原始大小: 482 482

界面效果:

测试设备: Xiaomi   Mi-4c   V8210LXKCNDL   511

测试前准备操作: 同一款设备,设置背景前后多次调用gc直到内存短时间内保持稳定不再变化

内存使用情况: 下图依次是 初始内存,使用占用的内存,使用Drawable占用的内存,使用onDraw绘制占用的内存

使用占用内存: 1397 MB - 1197 MB = 200 MB

使用Drawable占用内存: 1197 MB - 1197 MB = 000 MB (不会是0,有误差,只是很少)

使用onDraw绘制占用内存: 1198 MB - 1197 MB = 001 MB

结论: 绘制背景,或者使用系统提供Drawable作为背景,会大大减少内存占用

Drawable

参考资料:

Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

Android GradientDrawable(shape标签定义)静态使用和动态使用(圆角,渐变实现)

“让你的最小化”一节中描述的方法:使用尽可能小的图,使用9,自己绘制背景或者使用Drawable来绘制背景

加载大时需要对进行压缩,使用等比例压缩方法直接在内存中处理

这样做要注意的是,质量会变差,inSampleSize设置的值越大,质量就越差。

有时候我们取得一张,也许只是为了获得这个的一些信息,比如的width、height等信息,不需要显示到界面上,这个时候我们可以不把加载到内存中。

由于Android外层是使用java,而底层使用的是C语言为对象分配的内存空间。所以我们的外部虽然看起来释放了,但里层却并不一定完全释放了,我们使用完后最好再释放掉里层的内存空间。

RGB(ARGB)

RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。在Android中还有包含透明度Alpha的颜色模型,即ARGB。

YUV

YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

YUV的原理是把亮度与色度分离,研究证明,人眼对亮度的敏感超过色度。利用这个原理,可以把色度信息减少一点,人眼也无法查觉这一点。

主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题

YUV的存储中与RGB格式最大不同在于,RGB格式每个点的数据是连继保存在一起的。即R,G,B是前后不间隔的保存在2-4byte空间中。而YUV的数据中为了节约空间,U,V分量空间会减小。每一个点的Y分量独立保存,但连续几个点的U,V分量是保存在一起的,(反正人眼一般也看不出区别)这几个点合起来称为macro-pixel, 这种存储格式称为Packed格式。另外一种存储格式是把一幅图像中Y,U,V分别用三个独立的数组表示。这种模式称为planar模式。

CMYK

  CMYK也称作印刷色彩模式,顾名思义就是用来印刷的。印刷四分色模式是彩色印刷时采用的一种套色模式,利用色料的三原色混色原理,加上黑色油墨,共计四种颜色混合叠加,形成所谓“全彩印刷”。四种标准颜色是:

CMYK和RGB相比有一个很大的不同:RGB模式是一种发光的色彩模式,你在一间黑暗的房间内仍然可以看见屏幕上的内容;CMYK是一种依靠反光的色彩模式,我们是怎样阅读报纸的内容呢?是由阳光或灯光照射到报纸上,再反射到我们的眼中,才看到内容。它需要有外界光源,如果你在黑暗房间内是无法阅读报纸的。只要是在印刷品上看到的图像,就是CMYK模式表现的。比如期刊、杂志、报纸、宣传画等,都是印刷出来的,那么就是CMYK模式的了。

CMYK原色与叠加之后的颜色对比

在不考虑透明度的情况下,一个像素点的颜色值在计算机中的表示方法有以下3种:

在Java中,float类型的变量占32位,int类型的变量占32位,short和char类型的变量都在16位,因此可以看出,用浮点数表示法编码一个像素的颜色,内存占用量是96位即12字节;而用24位整数表示法编码,只要一个int类型变量,占用4个字节(高8位空着,低24位用于表示颜色);用16位整数表示法编码,只要一个short类型变量,占2个字节;因此可以看出采用整数表示法编码颜色值,可以大大节省内存,当然,颜色质量也会相对低一些。在Android中获取Bitmap的时候一般也采用整型编码。

回想一下Android的BitmapConfig类中,有ARGB_8888、ARGB_4444、RGB565等常量,现在可以知道它们分别代表了什么含义。同时也可以计算一张在内存中可能占用的大小,比如采用ARGB_8888编码载入一张1920 1200的,大概就会占用1920 12004/1024/1024=879MB的内存。

采用低内存占用量的编码方式,比如BitmapConfigARGB_4444比BitmapConfigARGB_8888更省内存;

1920 1200的:

ARGB_8888:1920 1200 4/1024/1024=879MB

ARGB_4444,RGB565:1920 1200 2/1024/1024=439MB

在Android中,对的使用一定要关注,大多数情况下,占用内存多,OOM发生都是因为资源使用不当。不要盲目加一个大图到Android项目中,能使用9进来使用,而且9图本身尽可能小,另外能使用绘制实现就不要加一个资源。有些时候,在不影响用户体验的情况下,可以降低素材质量,比如不需要透明度的就不要了,有些透明度用肉眼看不出来。

您好 !

根据您的描述, 

建议先尝试充电 3hr 後重启手机尝试。

若问题持续, 建议按下列步骤尝试操作 :

机子充满电, 备份数据後, 在関机 (OFF) 的状态下  ,

长按 [电源键]  和 [音量+] 键,10秒

进入Recovery模式後,用 [音量+], [音量-] 挪动光标   (见下图)

再操作2-wipes

选择  wipe data/factory reset > YES  , [HOME] 确认

选择  wipe cache partition > YES  , [HOME] 确认

选择  reboot system now > YES , [HOME] 确认

这样操作后重启,便完成了。

如果问题在2-wipes後仍没解决, 或根本2-wipes不了

便很可能是硬件引起的问题, 建议尽速送修。

以下答案由 汉尔顿净水器|高端分质净水专家 为您解答。

  净水器也称净水机。

  按滤芯组成结构分为RO反渗透净水机和超滤膜净水机、能量净水机、陶瓷净水器等。

  RO反渗透净水机标配的是5级过滤,即:

  第一级为PP棉,为初级过滤,主要过滤泥沙、铁锈这种肉眼可见的大颗粒的东西

  第二级为颗粒炭、对水中的有机物和无机胶体具有强大的截留作用,具有除臭、去味、除余氯、脱色等功效

  第三级为压缩炭、 对臭味,余氯,芳香族,COD有机物有良好的去除作用

  第四级为RO反渗透膜、RO反渗透膜孔径为00001微米(01纳米),一个细菌要缩小4000倍,传染性病毒要缩小200倍以上才能通过,因此可以有

  效去除水中细菌、病毒、重金属离子、农药残留物等有害物质

  第五级为后置活性炭(也称小T33)5级;利用活性炭的吸附原理,能有效去除水中的余氯,有毒有害物质,改善水质和口感

  超滤净水器是以超滤膜为主、其它滤芯如活性炭(不包括能量滤芯)为辅,超滤净水器按照安装方式分为立式与卧式两种,

  立式超滤净水器由PP棉、颗粒活性碳、压缩活性炭、外压超滤膜、T33组成;

  卧式超滤净水器《俗称管道超滤机》由不锈钢外壳及内压超滤膜、KDF组成。

  超滤净水器有1至12级滤芯过滤,大体都是PP棉滤芯、碳滤芯、超滤膜、还有一些什么碱性 弱碱 除氯 之类的功能滤芯组成,

  综上所述,RO机价Ge要高一些,超滤的相对P宜。市场上北方大多数地区用RO纯水机,南方多用超滤机,但是随着水污染的加剧,纯水机市场隐隐有超越超滤机市场的势头。

  ----------------------------------------------------------

  市场上流行的大牌子有美的,汉尔顿,沁园,安吉尔等,选购净水器要注意如下几点:

  第一、看当地水质如何,是用RO机还是超滤机。

  第二、看经销商的服务水平和态度,

  第三、看自己接受的价格水平,

  第四、看售后服务,

  第五、看产品外观,是否中意,

  第六、看产品功能,是否适合用时用,

  第七、看每天水量多少,75G还是50G

  ---------多听多看,先了解,再入选购!

  --------------------------------------------------------------------

  产品参考信息:

  汉尔顿HRD-7506(RO管线一体式)净水器

  材质:豪华一体外壳,带LED液晶全电脑微控

  过滤工艺:PP+颗粒炭+压缩炭+RO膜+T33

  过滤精度:六维净化00001微米

  尺寸:665250460mm 2分接口

  流量:284L/天

  额定电压:AC220V 50HZ

  制热功率:800W ≥90℃

  制热能力:20L/H

  水箱储水量:7L

  臭氧产量:18-2L/min

  实用人数:30人内

  使用范围:家用/商用

  配置:汉尔顿标配

  价格:3680元

-------------------------------------------------------

  加MenG要考察以下几点:

  第一、产品质量保证、3C,涉水批件等

  第二、加盟后支持政策到位,

  第三、是否有成熟的销售方法,

  第四、考虑一下汉尔顿,还有人下市场教净水器知识和销售方法

  净水器加盟不要光看网络宣传,还要看实打实的销量!卖不出去,牌子再好你也赚不了那份钱,做生意实事求是的好

  净水器加盟要考察产品质量、支持政策,销售方法,考虑一下汉尔顿,还有人下市场教净水器知识和销售方法

  -----------------------------------

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/shuma/1323698.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-09-14
下一篇2023-09-14

随机推荐

  • 兔子冬天怕冷吗

    怕冷。兔子身上虽然覆盖着浓密的毛发,但是在过冬的时候也要做好防寒保暖的工作,为兔兔准备一个温暖厚实的兔窝,如果还是夏天时候一个单独的兔笼,那这是万万不行的。如果天气很冷,可以给兔兔准备一些干草,或者是温暖厚实的棉垫。当然干草一定要定期更换,

    2024-04-15
    1018200
  • 抗老精华液哪个牌子最好用

    抗老精华液以下牌子最好用:1、宝丽极光幻彩精华液这款产品是它抗衰老系列当中最高端的产品,里面蕴含的成分也是非常的珍贵的,集合了多种核心专利技术,可以从根源上柔弱肌肤。2、莱伯妮鱼子酱反重力精华这款产品主要利用了深海鱼籽精粹作为配方,再结合珍

    2024-04-15
    46100
  • 妮维雅晶纯焕亮和晶纯皙白区别

    妮维雅晶纯焕亮和晶纯皙白系列在功效上有以下区别: 晶纯焕亮系列。主要功效是去黄提亮,它适用于肌肤暗沉,肤色不均,以及熬夜疲劳的肌肤,因此,如果你是因为经常熬夜导致的肌肤暗沉,使用妮维雅晶纯焕亮系列可能会有很好的效果。 晶纯皙白系列。主要功效

    2024-04-15
    40900
  • 超补水保湿的护肤品

    超补水保湿的护肤品  超补水保湿的护肤品,想拥有好的肤色,好的皮肤,找到一款好用的适合自己的护肤品是至关重要的,有些护肤品如果不适合自己可能会导致过敏,所以在选择的时候我们要很慎重,下面会大家推荐超补水

    2024-04-15
    41500
  • 有谁用过妮维雅的防晒产品?进来说说啊

    用过的感觉油油的。比较好的有兰蔻,迪奥,资生堂,建议买三个15ml中样,不到200元,差不多够用了我觉得防晒霜一般比较油腻,涂在脸上有不透气的感觉。其实防晒指数越大对皮肤的副作用也就越大,而且防晒霜不是一劳永逸的,要定时的补涂,效果才会最好

    2024-04-15
    31200
  • 妮维雅洗面奶真假辨别_妮维雅男士洗面奶真假鉴别

    妮维雅洗面奶产品因为其销量还是非常不错的,同时用户的评价也是也一直处于高星,所以假货也无可避免的就出现在大家的视野之中,下面我们就来看看关于妮维雅洗面奶真假对比。妮维雅洗面奶真假辨别从包装的印刷上看:这方面区分最大的就是产品的背面,

    2024-04-15
    25700
  • 碧欧泉蓝钻精华水和紧肤水哪个好

    都好。1、碧欧泉蓝钻精华爽肤水,收敛毛孔,紧致轮廓,让肌肤畅饮深澈补水,舒缓紧绷,平滑修护。2、碧欧泉蓝钻紧肤水主如果收缩毛孔,它含有酒精,会有燥热干爽的觉得能够避免青春痘的滋生,有用抑制细菌的生殖。碧欧泉精华露和精华液的质感不同。精华液的

    2024-04-15
    28400

发表评论

登录后才能评论
保存