我有很多"内存不足"在Galaxy S4用户的应用程序中报告。
该应用正在使用Bitmap。它有一个图形用户界面。它适用于所有设备,但在S4上崩溃。
您知道我们是否需要为S4进行任何特殊的内存管理?
答案 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