公司做彩票网站违法吗,51一起做网站,中国建设监理协会网站查询成绩,网站规划课程设计模板开发中给ImageView加载一个高质量图片时#xff0c;APP抛出了“Canvas: trying to draw too large(840253440bytes) bitmap.”的异常。猜测是图片占用内存太大#xff0c;超出APP被分配的内存(我用的mate9#xff0c;APP被分的内存差不多200m)#xff0c;造成了OOM。解决方…开发中给ImageView加载一个高质量图片时APP抛出了“Canvas: trying to draw too large(840253440bytes) bitmap.”的异常。猜测是图片占用内存太大超出APP被分配的内存(我用的mate9APP被分的内存差不多200m)造成了OOM。解决方法1.修改图片分辨率。降低分辨率以减少内存占用前提是手机展示时不会失真太严重。2.正确的放置图片资源。把高分辨率的图片放在mipmap-xxhdpi(drawable-xxhdpi)或者mipmap-xxxhdpi(drawable-xxxhdpi).原因1.一张图片占用内存超过200M是很少见的一张4208x3120的高质量图片才占用50M内存(4208X3120X4)APP内占内存最大的也就只有启动页或引导页UI设计师一般也是按1280X720来设计所以引起OOM很大一部分原因是图片资源位置放置不规范引起的。如把高质量图片放置在mipmap-ldpi文件夹下。为什么把高质量图片放置在mipmap-ldpi文件夹下会引起OOM呢这得从APP加载图片资源的顺序来分析。1.APP加载图片会根据手机分辨率从相应的文件夹下寻找指定的图片。比如我的手机是1080X1920,手机像素密度为400dpi所以会首先去mipmap-xxhdpi去加载图片资源如果找不到就去更高级别目录加载(xxxhdpi),如果xxxhdpi目录也没有图片资源就往下一级目录查找(xhdpi)。那不按要求放置图片为什么会引起oom呢这就是要说的重点了。先上一张图图片资源放置的为不正确上面说了系统加载图片时会按照屏幕分辨率去指定的目录加载图片资源找不到才会去其他目录找如果在其他目录找到图片资源系统就会加载该资源但加载前系统会对图片进行处理(因为不是从相应目录下加载的图片资源系统加载时会对图片处理以到达需要的分辨率)。如我手机分辨率是1080X1920但是系统没有在xxhdpi目录下加载到需要的图片资源而是在hdpi文件夹下找到了图片资源图片可以被正常加载。但是hdpi放的是1.5倍的图xxhdpi放的是3倍图。1080X1920的手机从hdpi加载的图片就会被系统放大2倍后加载到内存里比如原图片是28X28,放入mipmap-hdpi的文件夹下加载到内存中就会变成56X56.