Я создаю приложение для блога и получаю утечку памяти, когда закрываю какой-либо фрагмент .... Я пытаюсь найти ответ, и некоторые говорят, что нужно обнулить ссылку на ваши взгляды на onDestroyView или onDestroy (я пробовал и то, и другое, но работать), а затем я только что создал пустой фрагмент без каких-либо представлений (просто синий фон), и даже если я закрываю BlankFragment, все равно я получаю ту же утечку памяти ... следуйте код, который я использую для добавления пустого фрагмента
Fragment blankFragment = new BlankFragment();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.hide(userProfileFragment); //hiding userProfileFragment which is current fragment
transaction.add(R.id.frame_container, blankFragment,"blank");
transaction.addToBackStack(null);
transaction.commit();
и после того, как я закрываю только пустой фрагмент, который не содержит никаких представлений .. Я получаю следующее предупреждение об утечке памяти в Leak Canary
┬───
│ GC Root: System class
│
├─ leakcanary.internal.InternalLeakCanary class
│ Leaking: NO (MainActivity↓ is not leaking and a class is never leaking)
│ ↓ static InternalLeakCanary.resumedActivity
├─ MainActivity instance
│ Leaking: NO (HomeFragment↓ is not leaking and Activity#mDestroyed is false)
│ ↓ MainActivity.startingFragment
├─ HomeFragment instance
│ Leaking: NO (UserProfile_Fragment↓ is not leaking and Fragment#mFragmentManager is not null)
│ Fragment.mTag=home
│ ↓ HomeFragment.mFragmentManager
├─ androidx.fragment.app.FragmentManagerImpl instance
│ Leaking: NO (UserProfile_Fragment↓ is not leaking)
│ ↓ FragmentManagerImpl.mAdded
├─ java.util.ArrayList instance
│ Leaking: NO (UserProfile_Fragment↓ is not leaking)
│ ↓ ArrayList.elementData
├─ java.lang.Object[] array
│ Leaking: NO (UserProfile_Fragment↓ is not leaking)
│ ↓ Object[].[3]
├─ UserProfile_Fragment instance
│ Leaking: NO (Fragment#mFragmentManager is not null)
│ Fragment.mTag=user
│ ↓ UserProfile_Fragment.transaction
│ ~~~~~~~~~~~
├─ androidx.fragment.app.BackStackRecord instance
│ Leaking: UNKNOWN
│ ↓ BackStackRecord.mOps
│ ~~~~
├─ java.util.ArrayList instance
│ Leaking: UNKNOWN
│ ↓ ArrayList.elementData
│ ~~~~~~~~~~~
├─ java.lang.Object[] array
│ Leaking: UNKNOWN
│ ↓ Object[].[1]
│ ~~~
├─ androidx.fragment.app.FragmentTransaction$Op instance
│ Leaking: UNKNOWN
│ ↓ FragmentTransaction$Op.mFragment
│ ~~~~~~~~~
╰→ BlankFragment instance Leaking: YES (ObjectWatcher was watching this because BlankFragment received Fragment#onDestroy() callback and Fragment#mFragmentManager is null)