Почему фрагменты не уничтожаются после вызова fragmentmanager.popbackstack()

Переход между несколькими фрагментами осуществляется следующим образом:

    var fragmentTransaction = MainActivity.SupportFragmentManager.BeginTransaction();
    fragmentTransaction.Replace(Resource.Id.container, fragment, tag);
    if (isAddToBackStack)
    {
        fragmentTransaction.AddToBackStack(tag);
    }
    fragmentTransaction.Commit();

После перехода по фрагменту A -> B -> C -pop-> B -pop-> A Фрагменты B и C все еще находятся в памяти (указывается профилировщиком), несмотря на то, что для этих фрагментов вызывается OnDestroy().

Это нормально, что фрагменты остаются в памяти после вызова OnDestroy()? Я понимаю, что заменяется транзакция, но ожидал, что OnDestroy будет вызываться при уничтожении фрагмента (и, следовательно, никаких живых объектов в памяти не будет.

Есть ли способ заставить фрагменты разрушаться, когда они лопаются?

0 ответов

Другие вопросы по тегам