2015-02-14 5 views
3

Я создал пользовательский интерфейс, богатый изображениями PNG для приложения Xamarin для Android, в основном изображения назначаются декларативно в макетах AXML и имеют размер от 5 КБ до 100 КБ, к сожалению, после запуска приложения и навигации между действиями на время, когда приложение вылетает с сообщениями в LogCat, в которых упоминаются проблемы с памятью, как следуетXamarin: проблема с памятью

02-14 21: 01: 34.856: E/dalvikvm-heap (18277): Недостаточно памяти на 4320016 байт распределение.

02-14 21: 01: 34,876 D/Skia (18277): --- распределение потерпело неудачу для масштабируемого битового массива

Кроме того, когда я контролировал приложение с помощью Xamarin Profiler, я обнаружил, что диаграмма распределения памяти идет (хотя я использую метод Finish для его закрытия), а это означает, что память, потребляемая этой деятельностью, не освобождается!

Любая идея в чем проблема?

+0

Размер файла не имеет значения. Я могу сделать 10K-файл, который требует больше оперативной памяти, чем 1MB-файл. Какой размер растровых изображений? Вы перерабатываете растровые изображения в onStop()? – Simon

+0

Я предполагаю, что по размеру растрового изображения вы имеете в виду размер ImageView или View с использованием изображений, я использую много изображений в качестве фона, так что это весь размер экрана, некоторые фоны непосредственно используют PNG-файлы, а другие используют файлы xml для плит PNG-изображение. Изображения присваиваются представлениям декларативно, поэтому я не уверен, как их перерабатывать. – Sisyphus

+0

Эффективно отображая http://developer.android.com/training/displaying-bitmaps/index.html, убедитесь, что ваши растровые изображения имеют право на сбор. Вы можете сделать еще один шаг со слабыми рекомендациями. http://stackoverflow.com/questions/28519203/xamarin-out-of-memory-issue –

ответ

1

У нас была такая же проблема, и нам пришлось удалить фоновое изображение, чтобы решить проблему. Я не уверен, почему Xamarin не получил отчет об ошибке.

0

я имел same issue недавно, и я решил его вызовом GC.Collect() всякий раз, когда проблемная деятельность закрывается

-1

Добавить ниже строки в вашем файле манифеста,

android:largeHeap="true" 
+1

Это лишь скроет проблему на некоторое время – xleon