2014-09-30 3 views
2

Приложение, которое я разработал, представляет собой приложение для опроса. Навигация по моему приложению похож на этот файл Page1 -> Page2 -> Page3 -> Page4 -> Page1. При навигации с одной страницы на другую он занимает кучу пространства каждый раз, что приводит к исключению OOM.Исключение из памяти в Xamarin.Forms - Android

Я попытался

  • GC.Collect() в OnDisappearing() на каждой странице, это не помогло

  • использовано переопределение OnLowMemory() в MainActivity.

    public override void OnLowMemory() 
    { 
        GC.Collect(); 
    } 
    
  • Удаленный Высокое разрешение изображения.

Я использовал изображение для кнопки визуализатора, который тоже в блоке с использованием, кроме этого я не использовал битовую карту в другом месте.

Как уменьшить использование пространства кучи от выращивания? Я не могу найти способ освободить место кучи. Он продолжает расти, что приводит к исключению OOM. I have asked a similar question here

Может кто-нибудь указать на какое-то полезное направление, чтобы преодолеть это?

ответ

3

Дело в том, что Forms хранит экземпляры страниц в памяти в стеке навигации. Я бы выбрал столько ресурсов, сколько я могу, когда следующая страница будет перенесена (ну, изображения, вероятно, самая большая память) и восстановить их, когда страница снова попадает в фокус. Сборщик мусора не поможет, потому что все еще упоминается.

Это, как мне кажется, навигационная система не работает достаточно хорошо. Единственное, что вы можете сделать, это нарисовать uservoice и надеяться, что Xamarin в конечном итоге улучшит его.

ОБНОВЛЕНИЕ: Я пропустил, что в конце страницы будет запущена корневая страница, поэтому этот ответ будет применяться, если пользователь продолжит навигацию вперед.

+0

не будет ** this.Navigation.PopModalAsync() ** удаляет экземпляр, который был создан ??. Будет ли установка каждой кнопки нулевой, не поможет? –

+0

Ops, извините, я пропустил, вы возвращаетесь к корню в конце. Попробуйте задержку GC.Collect в этом случае, как я описал здесь http://stackoverflow.com/questions/25198762/is-this-a-memory-leak-in-xamarin-forms/26115245#26115245 –

+0

Плюс мог бы быть [ошибка] (https://bugzilla.xamarin.com/show_bug.cgi?id=21995) в версии <1.2.3, согласно Джейсону, зафиксированному в 1.2.3-pre3. –

Смежные вопросы