Как узнать, сколько свободного размера кучи доступно для растрового изображения для Android 2. *?

Наше приложение использует много растровых изображений. Оно отлично работает, например, на G1, XOOM. Но в HTC Desire возникает ошибка OutOfMemory. В коде мы используем try / catch (OutOfMemoryError e) и все устройства (кроме Desire) выдают исключение, но HTC просто убивает приложение без исключения OOM. Мы ограничили память для растровых изображений до 12 МБ, и казалось, что это решение решило проблему, но у клиента все еще есть проблема с HTC Desire HD. Есть OOM даже с ограничением 12 Мб. Вот логи:

06-07 12:03:43.978 E/dalvikvm-heap( 29616):1140128-byte external allocation too large for this process. 
06-07 12:03:43.978 E/dalvikvm( 29616):Out of memory: Heap Size=12311KB, Allocated=9420KB, Bitmap Size=12139KB, Limit=21884KB
06-07 12:03:43.978 E/dalvikvm( 29616):Trim info: Footprint=15751KB, Allowed Footprint=15751KB, Trimmed=3440KB
06-07 12:03:43.978 E/GraphicsJNI( 29616):VM won't let us allocate 1140128 bytes

AFAIK существуют различные ограничения размера кучи для устройств (G1: 16 Мб, Droid: 24 Мб, Xoom 48 Мб) На мой взгляд, система должна отдавать не менее 16 Мбайт, но у нас OOM с 12 Мбайт. Мой вопрос: как узнать, сколько свободного размера кучи доступно для растрового изображения для Android 2. *? Или, пожалуйста, посоветуйте, как избежать такой проблемы в другими способами. К вашему сведению, мы не можем использовать меньше растровых изображений, особенно если они отлично работают на других устройствах. Заранее благодарим за любые lp!

8
задан EJoshuaS - Reinstate Monica 24 August 2017 в 17:52
поделиться