在使用Bitmap时仅在s4上内存不足

时间:2014-02-21 01:24:54

标签: android memory memory-management

我有很多"内存不足"在Galaxy S4用户的应用程序中报告。

该应用正在使用Bitmap。它有一个图形用户界面。它适用于所有设备,但在S4上崩溃。

您知道我们是否需要为S4进行任何特殊的内存管理?

2 个答案:

答案 0 :(得分:1)

我不相信S4会通过内存管理或图像引入与众不同的东西。我想看看应用程序的内存使用情况会有所帮助。请按照本指南查看应用程序的可能泄漏和内存消耗。

http://developer.android.com/tools/debugging/debugging-memory.html

因为你说你在应用程序中处理图像...在我的应用程序中,我遇到了位图的内存问题。一个好的建议是使用LRUCache来缓存和管理位图。请点击以下链接了解LruCache。

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

希望这有帮助!

答案 1 :(得分:1)

为了解决这个问题,您需要了解图像如何使用内存。

想象一下800x800像素的图像。没有任何缩放,这将需要大约2.5MB的内存。宽x高x 4字节。

所有加载的图像都存储在大小有限的堆上(这里有很多关于堆大小的讨论)。

现在将该图像加载到显示在1024x768屏幕上的ImageView,ImageView的大小为800x800 - 与图像大小相同。您正在使用DIP,因此您的UI可以缩放。

您的1024x768显示屏有786,432像素。 S4具有1920x1080 = 2,073,600像素。大约是1024x768设备的2.6倍。

如果您没有做任何事情来缩放该图像而您没有使用密度和分辨率“bucket”资源文件夹,那么同一图像现在需要2.5x2.6MB = 6.6MB。

  

关键是除非你控制它,你的图像才会使用   不同数量的堆内存(这是有限的,没关系   不同设备上的设备有多少RAM。

我怀疑您的应用也会在Nexus设备上出现问题。

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

http://developer.android.com/guide/practices/screens_support.html