Java 每当我关闭任何片段时,都会出现未知内存泄漏
当我关闭任何片段时,我正在制作博客应用程序,并且内存泄漏……我试图找到答案,一些人说在onDestroyView或onDestroy上取消您的视图引用(我尝试了这两种方法,但都不起作用),然后我只创建了没有任何视图的空白片段(只有蓝色背景),即使我关闭了BlankFragment,我仍然得到相同的内存泄漏…下面是我用来添加空白片段的代码Java 每当我关闭任何片段时,都会出现未知内存泄漏,java,android,android-fragments,memory-leaks,leakcanary,Java,Android,Android Fragments,Memory Leaks,Leakcanary,当我关闭任何片段时,我正在制作博客应用程序,并且内存泄漏……我试图找到答案,一些人说在onDestroyView或onDestroy上取消您的视图引用(我尝试了这两种方法,但都不起作用),然后我只创建了没有任何视图的空白片段(只有蓝色背景),即使我关闭了BlankFragment,我仍然得到相同的内存泄漏…下面是我用来添加空白片段的代码 Fragment blankFragment = new BlankFragment(); FragmentTransaction transaction
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)
UserProfile\u Fragment.transaction可能是泄漏的原因,您不应该将片段事务保存在内存中,因为它会保留空白片段 UserProfile\u Fragment.transaction可能是泄漏的原因,您不应该将片段事务保存在内存中,因为它会保留空白片段