android - xml图像占用了太多内存 - android

标签 android image image-processing memory-management android-xml

您好,我是 android 的新手,在使用 xml 定位和设计我的 Activity 布局时遇到了一些内存管理问题。 大多数图片都在 100kb 左右,但大小不一,例如图片 1 为 512x512,图片 2 为 120x320 等。 目前,这些图像正在降低我的应用程序的性能,有时甚至会崩溃。 有没有办法减少图像在应用程序中占用的内存量?

最佳答案

为了理智地处理位图,应用程序必须经过许多步骤。

  • 压缩尺寸小。平衡磁盘(或在线)格式的质量与文件大小非常重要。能够通过有损预处理器运行 PNG 文件,或者在需要时选择使用 WEBP/JPG 对应用程序中的每个图像都至关重要。 Smaller PNG Files涵盖更多。然而,这里的问题是这对内存 大小没有帮助。请记住,当您的图像从磁盘加载时,它们会在内存中解压缩为每像素 32 位(换句话说,没有压缩)。

  • 压缩在内存中的格式。Android 提供替代的 565 格式,它每像素仅使用 16 位,而不是 8888 格式的 32 位。如果您使用不需要 alpha 的图像,您应该考虑 Smaller Pixel Formats 中讨论的过程利用加载位图作为 565。

  • 重新使用位图空间。大多数使用缩略图的应用程序一次只能在屏幕上显示 10-20 个缩略图(即使可能有数千个要加载)。 Re-using bitmaps 中描述了这里的技巧.基本上,一旦不再需要某个缩略图,您就可以重新使用它的空间来放置新的缩略图,而不是分配一个全新的缩略图。

  • 显示分辨率。加载一个 2MB 的图像是没有意义的,只将它显示为缩略图。相反,您应该将图像缩放到它在设备上显示的分辨率。我在 other SO post 中讨论了加载这些图像的最有效方式。 .

一般来说,像Picasso 这样的图书馆和 Glide做好提供使这一切变得更容易的 API 的工作;但他们仍在幕后经历这些相同的过程。

关于android - xml图像占用了太多内存 - android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32181454/

相关文章:

android - 约束布局问题

java - Braintree 集成 - 错误 : Class not found: com. Braintreepayments.api.dropin.DropInRequest

image-processing - 机器视觉问题——照片匹配。使用 OpenCV 是否有可能/已知的解决方案?

python - 处理图像时难以 reshape numpy 数组

OpenCV:对不同的图像尺寸使用单应性

android - Firebase 数据库获取特定级别 android 的子项

android - 付款创建错误paypal sdk android

html - 图像不工作 - 这是一个 Chrome 错误吗?

ios - 与微信共享图像和文本消息在 objective-c 中不起作用

html - 为什么背景图像在按钮中被切断