[英]I am getting unknown memory leak whenever I am closing any fragment
我正在制作博客應用程序並在關閉任何片段時得到 memory 泄漏......我試圖找到答案,有些人對 null 說你在 onDestroyView 或 onDestroy 上的意見參考(我都試過了,但它不起作用)和比我剛剛創建沒有任何視圖的空白片段(只是藍色背景),即使我正在關閉 BlankFragment,我仍然得到相同的 memory 泄漏......下面是我用來添加空白片段的代碼
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 中收到以下 memory 泄漏警告
┬───
│ 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_Fragment.transaction 可能是導致泄漏的原因,您不應將片段事務保存在 memory 中,因為它保留了 BlankFragment。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.