Android Dialog Memoery 在 Fragment 中泄漏

问题描述

我在 Fragment 中使用了自定义对话框。

if (dialogAuthorization == null) {
     dialogAuthorization = new Dialog(getActivity());
     dialogAuthorization.requestwindowFeature(Window.FEATURE_NO_TITLE);
     dialogAuthorization.setContentView(R.layout.dialog_sales_register_change_deposit);
}

我的问题是我正在使用泄漏金丝雀来检查应用程序性能

但它显示以下日志泄漏内存。

我也在使用后关闭对话框。但仍然显示内存泄漏。

任何人都可以帮助我清除或正确销毁可用于 GC 的对话框?。

01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ┬───
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │ GC Root: System class
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ├─ com.jmsc.jmscpostabapp.AppBaseActivity class
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    Leaking: NO (FragmentSalesRegisterRConly↓ is not leaking and a class is never leaking)
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    ↓ static AppBaseActivity.objEpsonPrintEND
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ├─ com.jmsc.jmscpostabapp.ui.fragments.sales.FragmentSalesRegisterRConly instance
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    Leaking: NO (Fragment#mFragmentManager is not null)
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    activity instance of com.jmsc.jmscpostabapp.ui.activity.HomeActivity with mDestroyed = false
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    appContext instance of com.jmsc.jmscpostabapp.JMSCApplication
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    objbaseActivity instance of com.jmsc.jmscpostabapp.ui.activity.HomeActivity with mDestroyed = false
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    objAct instance of com.jmsc.jmscpostabapp.ui.activity.HomeActivity with mDestroyed = false
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    Fragment.mTag=SALES REGISTER
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    ↓ FragmentSalesRegisterRConly.dialogAuthorization
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │                                  ~~~~~~~~~~~~~~~~~~~
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ├─ android.app.Dialog instance
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    Leaking: UNKNowN
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    Retaining 19.9 kB in 376 objects
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    mContext instance of android.view.ContextThemeWrapper,wrapping activity com.jmsc.jmscpostabapp.ui.activity.
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    HomeActivity with mDestroyed = false
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    Dialog#mDecor is null
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    ↓ Dialog.mWindow
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │             ~~~~~~~
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ├─ com.android.internal.policy.PhoneWindow instance
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    Leaking: UNKNowN
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    Retaining 19.7 kB in 371 objects
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    mContext instance of android.view.ContextThemeWrapper,wrapping activity com.jmsc.jmscpostabapp.ui.activity.
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    HomeActivity with mDestroyed = false
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    Window#mDestroyed is false
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │    ↓ PhoneWindow.mDecor
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: │                  ~~~~~~
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ╰→ com.android.internal.policy.PhoneWindow$DecorView instance
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     Leaking: YES (ObjectWatcher was watching this because com.android.internal.policy.PhoneWindow$DecorView received
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     View#onDetachedFromWindow() callback)
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     Retaining 2.3 kB in 45 objects
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     key = 8133e6b0-f2ac-4a64-8c31-190aaad6e516
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     watchDurationMillis = 12486
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     retainedDurationMillis = 7212
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     View not part of a window view hierarchy
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     View.mAttachInfo is null (view detached)
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     View.mWindowAttachCount = 1
01-06 03:20:54.147 14985-15323/com.jmsc.jmscpostabapp D/LeakCanary: ​     mContext instance of android.view.ContextThemeWrapper,wrapping activity com.jmsc.jmscpostabapp.ui.activity.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)