Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FragNav3.0 has memory leak? #179

Closed
burakztrk opened this issue Nov 27, 2018 · 10 comments
Closed

FragNav3.0 has memory leak? #179

burakztrk opened this issue Nov 27, 2018 · 10 comments

Comments

@burakztrk
Copy link

burakztrk commented Nov 27, 2018

Memory Leak give varning all times with FragNav3.0
but old version not problem.
Im writing java. new FragNav3.0 is kotlin.I know. but its a problem?

* androidx.constraintlayout.widget.ConstraintLayout has leaked:
* Toast$TN.mNextView
* ↳ LinearLayout.mContext
* ↳ TabHostActivity.!(fragNavController)!
* ↳ FragNavController.!(fragmentManger)!
* ↳ FragmentManagerImpl.!(mActive)!
* ↳ SparseArray.!(mValues)!
* ↳ array Object[].!([2])!
* ↳ ListSummaryItemsFragment.pullToRefreshLayout
* ↳ SwipeRefreshLayout.mParent
* ↳ ConstraintLayout

* Reference Key: b1449967-416d-4633-97ad-e6fe4c59b492
* Device: Google google Android SDK built for x86 sdk_gphone_x86
* Android Version: 9 API: 28 LeakCanary: 1.6.2 0ebc1fc
* Durations: watch=5570ms, gc=135ms, heap dump=2267ms, analysis=5707ms

* Details:
* Instance of android.widget.Toast$TN
|   static $class$status = -536870912
|   static $class$methods = 1902976660
|   static $class$primitiveType = 131072
|   static $class$dexTypeIndex = 5868
|   static $class$numReferenceStaticFields = 0
|   static $class$accessFlags = 524288
|   static $class$clinitThreadId = 0
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$extData = null
|   static $class$sFields = 1902002436
|   static LONG_DURATION_TIMEOUT = 7000
|   static $class$dexClassDefIndex = 6024
|   static $class$classLoader = null
|   static SHOW = 0
|   static $class$classSize = 284
|   static $class$referenceInstanceOffsets = 1011
|   static $class$virtualMethodsOffset = 3
|   static $class$objectSizeAllocFastPath = 72
|   static HIDE = 1
|   static $class$copiedMethodsOffset = 8
|   static $class$vtable = null
|   static $class$superClass = android.app.ITransientNotification$Stub
|   static $class$dexCache = java.lang.DexCache@1897591112 (0x711af148)
|   static $class$componentType = null
|   static $class$name = "android.widget.Toast$TN"
|   static $class$objectSize = 72
|   static $class$numReferenceInstanceFields = 6
|   static $class$classFlags = 0
|   static $class$shadow$_monitor_ = 536870912
|   static $class$iFields = 1902002520
|   static CANCEL = 2
|   static $class$ifTable = java.lang.Object[6]@1898422456 (0x7127a0b8)
|   static $classOverhead = byte[132]@1898650369 (0x712b1b01)
|   static SHORT_DURATION_TIMEOUT = 4000
|   mDuration = 1
|   mGravity = 16
|   mHandler = android.widget.Toast$TN$1@320340352 (0x13180180)
|   mHorizontalMargin = 0.0
|   mNextView = android.widget.LinearLayout@320340712 (0x131802e8)
|   mPackageName = "com.corbone.beno.client.android"
|   mParams = android.view.WindowManager$LayoutParams@320340144 (0x131800b0)
|   mVerticalMargin = 0.0
|   mView = android.widget.LinearLayout@320340712 (0x131802e8)
|   mWM = android.view.WindowManagerImpl@315442448 (0x12cd4510)
|   mX = 0
|   mY = 0
|   mDescriptor = "android.app.ITransientNotification"
|   mObject = 3963891296
|   mOwner = android.widget.Toast$TN@320339992 (0x13180018)
|   shadow$_klass_ = android.widget.Toast$TN
|   shadow$_monitor_ = 0
* Instance of android.widget.LinearLayout
|   static $class$status = -536870912
|   static HORIZONTAL = 0
|   static $class$methods = 1903972984
|   static $class$primitiveType = 131072
|   static SHOW_DIVIDER_BEGINNING = 1
|   static $class$dexTypeIndex = 5524
|   static VERTICAL_GRAVITY_COUNT = 4
|   static sCompatibilityDone = true
|   static $class$numReferenceStaticFields = 0
|   static $class$accessFlags = 524289
|   static $class$clinitThreadId = 0
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$extData = null
|   static $class$sFields = 1902475480
|   static INDEX_FILL = 3
|   static $class$dexClassDefIndex = 6000
|   static $class$classLoader = null
|   static $class$classSize = 4170
|   static INDEX_CENTER_VERTICAL = 0
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$virtualMethodsOffset = 11
|   static $class$objectSizeAllocFastPath = 680
|   static INDEX_TOP = 1
|   static $class$copiedMethodsOffset = 63
|   static $class$vtable = null
|   static $class$superClass = android.view.ViewGroup
|   static $class$dexCache = java.lang.DexCache@1897591112 (0x711af148)
|   static $class$componentType = null
|   static $class$name = "android.widget.LinearLayout"
|   static sRemeasureWeightedChildren = true
|   static $class$objectSize = 676
|   static $class$numReferenceInstanceFields = 3
|   static SHOW_DIVIDER_END = 4
|   static INDEX_BOTTOM = 2
|   static $class$classFlags = 0
|   static $class$shadow$_monitor_ = 536870912
|   static SHOW_DIVIDER_MIDDLE = 2
|   static VERTICAL = 1
|   static $class$iFields = 1902475692
|   static $class$ifTable = java.lang.Object[10]@1897931960 (0x712024b8)
|   static $classOverhead = byte[4000]@1898509121 (0x7128f341)
|   static SHOW_DIVIDER_NONE = 0
|   mAllowInconsistentMeasurement = false
|   mBaselineAligned = true
|   mBaselineAlignedChildIndex = -1
|   mBaselineChildTop = 0
|   mDivider = null
|   mDividerHeight = 0
|   mDividerPadding = 0
|   mDividerWidth = 0
|   mGravity = 8388659
|   mLayoutDirection = 0
|   mMaxAscent = null
|   mMaxDescent = null
|   mOrientation = 1
|   mShowDividers = 0
|   mTotalLength = 391
|   mUseLargestChild = false
|   mWeightSum = -1.0
|   mAnimationListener = null
|   mCachePaint = null
|   mChildCountWithTransientState = 0
|   mChildTransformation = null
|   mChildUnhandledKeyListeners = 0
|   mChildren = android.view.View[12]@320342552 (0x13180a18)
|   mChildrenCount = 2
|   mChildrenInterestedInDrag = null
|   mCurrentDragChild = null
|   mCurrentDragStartEvent = null
|   mDefaultFocus = null
|   mDisappearingChildren = null
|   mFirstHoverTarget = null
|   mFirstTouchTarget = null
|   mFocused = null
|   mFocusedInCluster = null
|   mGroupFlags = 2244723
|   mHoveredSelf = false
|   mInvalidateRegion = null
|   mInvalidationTransformation = null
|   mIsInterestedInDrag = false
|   mLastTouchDownIndex = -1
|   mLastTouchDownTime = 0
|   mLastTouchDownX = 0.0
|   mLastTouchDownY = 0.0
|   mLayoutAnimationController = null
|   mLayoutCalledWhileSuppressed = false
|   mLayoutMode = -1
|   mLayoutTransitionListener = android.view.ViewGroup$4@320342536 (0x13180a08)
|   mLocalPoint = null
|   mNestedScrollAxes = 0
|   mOnHierarchyChangeListener = null
|   mPersistentDrawingCache = 2
|   mPreSortedChildren = null
|   mSuppressLayout = false
|   mTempPoint = null
|   mTooltipHoverTarget = null
|   mTooltipHoveredSelf = false
|   mTransientIndices = null
|   mTransientViews = null
|   mTransition = null
|   mTransitioningViews = null
|   mVisibilityChangingChildren = null
|   mAccessibilityCursorPosition = -1
|   mAccessibilityDelegate = null
|   mAccessibilityPaneTitle = null
|   mAccessibilityTraversalAfterId = -1
|   mAccessibilityTraversalBeforeId = -1
|   mAccessibilityViewId = -1
|   mAnimator = null
|   mAttachInfo = android.view.View$AttachInfo@320354936 (0x13183a78)
|   mAttributes = null
|   mAutofillHints = null
|   mAutofillId = null
|   mAutofillViewId = -1
|   mBackground = android.graphics.drawable.GradientDrawable@320341784 (0x13180718)
|   mBackgroundRenderNode = android.view.RenderNode@320366368 (0x13186720)
|   mBackgroundResource = 0
|   mBackgroundSizeChanged = false
|   mBackgroundTint = null
|   mBottom = 391
|   mCachingFailed = false
|   mClipBounds = null
|   mContentDescription = null
|   mContext = com.corbone.beno.client.android.activity.TabHostActivity@316248840 (0x12d99308)
|   mCurrentAnimation = null
|   mDefaultFocusHighlight = null
|   mDefaultFocusHighlightCache = null
|   mDefaultFocusHighlightEnabled = true
|   mDefaultFocusHighlightSizeChanged = true
|   mDrawableState = int[2]@1898293200 (0x7125a7d0)
|   mDrawingCache = null
|   mDrawingCacheBackgroundColor = 0
|   mFloatingTreeObserver = null
|   mForegroundInfo = null
|   mFrameMetricsObservers = null
|   mGhostView = null
|   mHasPerformedLongPress = false
|   mID = -1
|   mIgnoreNextUpEvent = false
|   mInContextButtonPress = false
|   mInputEventConsistencyVerifier = null
|   mKeyedTags = null
|   mLabelForId = -1
|   mLastIsOpaque = false
|   mLayerPaint = null
|   mLayerType = 0
|   mLayoutInsets = null
|   mLayoutParams = android.view.WindowManager$LayoutParams@320340144 (0x131800b0)
|   mLeft = 0
|   mLeftPaddingDefined = true
|   mListenerInfo = null
|   mLongClickX = NaN
|   mLongClickY = NaN
|   mMatchIdPredicate = null
|   mMatchLabelForPredicate = null
|   mMeasureCache = android.util.LongSparseLongArray@320359328 (0x13184ba0)
|   mMeasuredHeight = 391
|   mMeasuredWidth = 840
|   mMinHeight = 0
|   mMinWidth = 0
|   mNestedScrollingParent = null
|   mNextClusterForwardId = -1
|   mNextFocusDownId = -1
|   mNextFocusForwardId = -1
|   mNextFocusLeftId = -1
|   mNextFocusRightId = -1
|   mNextFocusUpId = -1
|   mOldHeightMeasureSpec = -2147483257
|   mOldWidthMeasureSpec = -2147482808
|   mOutlineProvider = android.view.ViewOutlineProvider$1@1897749000 (0x711d5a08)
|   mOverScrollMode = 1
|   mOverlay = null
|   mPaddingBottom = 42
|   mPaddingLeft = 42
|   mPaddingRight = 42
|   mPaddingTop = 42
|   mParent = android.view.ViewRootImpl@320351216 (0x13182bf0)
|   mPendingCheckForLongPress = null
|   mPendingCheckForTap = null
|   mPerformClick = null
|   mPointerIcon = null
|   mPrivateFlags = 16812080
|   mPrivateFlags2 = 1611867680
|   mPrivateFlags3 = 536870916
|   mRecreateDisplayList = false
|   mRenderNode = android.view.RenderNode@320341392 (0x13180590)
|   mResources = android.content.res.Resources@316253840 (0x12d9a690)
|   mRight = 840
|   mRightPaddingDefined = true
|   mRoundScrollbarRenderer = null
|   mRunQueue = null
|   mScrollCache = null
|   mScrollIndicatorDrawable = null
|   mScrollX = 0
|   mScrollY = 0
|   mSendViewScrolledAccessibilityEvent = null
|   mSendingHoverAccessibilityEvents = false
|   mStartActivityRequestWho = null
|   mStateListAnimator = null
|   mSystemUiVisibility = 0
|   mTag = null
|   mTempNestedScrollConsumed = null
|   mTooltipInfo = null
|   mTop = 0
|   mTouchDelegate = null
|   mTouchSlop = 21
|   mTransformationInfo = null
|   mTransientStateCount = 0
|   mTransitionName = null
|   mUnscaledDrawingCache = null
|   mUnsetPressedState = null
|   mUserPaddingBottom = 42
|   mUserPaddingEnd = -2147483648
|   mUserPaddingLeft = 42
|   mUserPaddingLeftInitial = 42
|   mUserPaddingRight = 42
|   mUserPaddingRightInitial = 42
|   mUserPaddingStart = -2147483648
|   mVerticalScrollFactor = 0.0
|   mVerticalScrollbarPosition = 0
|   mViewFlags = 402653328
|   mVisibilityChangeForAutofillHandler = null
|   mWindowAttachCount = 1
|   shadow$_klass_ = android.widget.LinearLayout
|   shadow$_monitor_ = 0
* Instance of com.corbone.beno.client.android.activity.TabHostActivity
|   static $class$status = -536870912
|   static $class$methods = 3998710680
|   static $class$primitiveType = 131072
|   static $change = null
|   static $class$dexTypeIndex = 321
|   static $class$numReferenceStaticFields = 2
|   static $class$accessFlags = 524289
|   static $class$clinitThreadId = 12204
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$extData = null
|   static $class$sFields = 3998710408
|   static $class$dexClassDefIndex = 154
|   static $class$classLoader = dalvik.system.PathClassLoader@315181064 (0x12c94808)
|   static $class$classSize = 2432
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$virtualMethodsOffset = 6
|   static $class$objectSizeAllocFastPath = 352
|   static log = java.util.logging.Logger@318440464 (0x12fb0410)
|   static serialVersionUID = -3562897586443766621
|   static $class$copiedMethodsOffset = 28
|   static $class$vtable = null
|   static $class$superClass = com.corbone.beno.client.android.base.BaseActivity
|   static $class$dexCache = java.lang.DexCache@315878224 (0x12d3eb50)
|   static $class$componentType = null
|   static $class$name = "com.corbone.beno.client.android.activity.TabHostActivity"
|   static $class$objectSize = 352
|   static $class$numReferenceInstanceFields = 10
|   static $class$classFlags = 0
|   static $class$shadow$_monitor_ = -1898045558
|   static $class$iFields = 3998710464
|   static $class$ifTable = java.lang.Object[46]@318440192 (0x12fb0300)
|   static $classOverhead = byte[2292]@315901105 (0x12d444b1)
|   activateShakeDetector = false
|   backButtonPressedLapsedTime = 0
|   currentTab = com.corbone.beno.model.Tab@317090392 (0x12e66a58)
|   fragNavController = com.ncapdevi.fragnav.FragNavController@317090464 (0x12e66aa0)
|   organizationKnoad = com.corbone.beno.model.Knoad@317025152 (0x12e56b80)
|   profileKnoad = com.corbone.beno.model.Knoad@317025264 (0x12e56bf0)
|   qrReaderClassRowId = null
|   scannerContent = null
|   shakeDetector = com.corbone.beno.client.android.utils.ShakeDetector@317090544 (0x12e66af0)
|   tabChangeRequest = false
|   tabHost = com.google.android.material.bottomnavigation.BottomNavigationView@316810312 (0x12e22448)
|   tabs = java.util.ArrayList@317025208 (0x12e56bb8)
|   toolbar = androidx.appcompat.widget.Toolbar@316883544 (0x12e34258)
|   mAlertDialog = com.corbone.beno.client.android.base.LoadingDialogView@317090576 (0x12e66b10)
|   mConnectionChangeReceiver = com.corbone.beno.client.android.utils.network.ConnectionChangeReceiver@317090672 (0x12e66b70)
|   mDialogTitle = null
|   mNoConnectionDialog = null
|   mSlidingMenu = com.corbone.beno.client.android.base.SlidingMenu@316893400 (0x12e368d8)
|   runningDataOperation = 0
|   toolbar = null
|   mDelegate = androidx.appcompat.app.AppCompatDelegateImpl@316249256 (0x12d994a8)
|   mResources = null
|   mThemeId = 2131820965
|   mCreated = true
|   mFragments = androidx.fragment.app.FragmentController@317090696 (0x12e66b88)
|   mHandler = androidx.fragment.app.FragmentActivity$1@317090712 (0x12e66b98)
|   mNextCandidateRequestIndex = 0
|   mPendingFragmentActivityResults = androidx.collection.SparseArrayCompat@317090744 (0x12e66bb8)
|   mRequestedPermissionsFromFragment = false
|   mResumed = true
|   mStartedActivityFromFragment = false
|   mStartedIntentSenderFromFragment = false
|   mStopped = false
|   mViewModelStore = null
|   mExtraDataMap = androidx.collection.SimpleArrayMap@317090768 (0x12e66bd0)
|   mLifecycleRegistry = androidx.lifecycle.LifecycleRegistry@317090792 (0x12e66be8)
|   mActionBar = null
|   mActionModeTypeStarting = 0
|   mActivityInfo = android.content.pm.ActivityInfo@317024496 (0x12e568f0)
|   mActivityTransitionState = android.app.ActivityTransitionState@317090824 (0x12e66c08)
|   mApplication = com.corbone.beno.client.android.application.BenoApp@315189784 (0x12c96a18)
|   mAutoFillIgnoreFirstResumePause = false
|   mAutoFillResetNeeded = true
|   mAutofillManager = android.view.autofill.AutofillManager@316539896 (0x12de03f8)
|   mAutofillPopupWindow = null
|   mCalled = true
|   mCanEnterPictureInPicture = true
|   mChangeCanvasToTranslucent = false
|   mChangingConfigurations = false
|   mComponent = android.content.ComponentName@317024968 (0x12e56ac8)
|   mConfigChangeFlags = 0
|   mCurrentConfig = android.content.res.Configuration@317090880 (0x12e66c40)
|   mDecor = com.android.internal.policy.DecorView@316251696 (0x12d99e30)
|   mDefaultKeyMode = 0
|   mDefaultKeySsb = null
|   mDestroyed = false
|   mDoReportFullyDrawn = true
|   mEmbeddedID = null
|   mEnableDefaultActionBarUp = false
|   mEnterTransitionListener = android.app.SharedElementCallback$1@1897687312 (0x711c6910)
|   mExitTransitionListener = android.app.SharedElementCallback$1@1897687312 (0x711c6910)
|   mFinished = false
|   mFragments = android.app.FragmentController@317090992 (0x12e66cb0)
|   mHandler = android.os.Handler@317091008 (0x12e66cc0)
|   mHasCurrentPermissionsRequest = false
|   mIdent = 24161167
|   mInstanceTracker = android.os.StrictMode$InstanceTracker@317091040 (0x12e66ce0)
|   mInstrumentation = android.app.Instrumentation@317091056 (0x12e66cf0)
|   mIntent = android.content.Intent@317024672 (0x12e569a0)
|   mLastAutofillId = 1073741870
|   mLastNonConfigurationInstances = null
|   mMainThread = android.app.ActivityThread@315097464 (0x12c80178)
|   mManagedCursors = java.util.ArrayList@317091128 (0x12e66d38)
|   mManagedDialogs = null
|   mMenuInflater = null
|   mParent = null
|   mReferrer = "com.corbone.beno.client.android"
|   mRestoredFromBundle = true
|   mResultCode = 0
|   mResultData = null
|   mResumed = true
|   mSearchEvent = null
|   mSearchManager = null
|   mStartedActivity = false
|   mStopped = false
|   mTaskDescription = android.app.ActivityManager$TaskDescription@317091152 (0x12e66d50)
|   mTemporaryPause = false
|   mTitle = "Dexter"
|   mTitleColor = 0
|   mTitleReady = true
|   mToken = android.os.BinderProxy@316253424 (0x12d9a4f0)
|   mTranslucentCallback = null
|   mUiThread = java.lang.Thread@1968768864 (0x75590760)
|   mVisibleFromClient = true
|   mVisibleFromServer = true
|   mVoiceInteractor = null
|   mWindow = com.android.internal.policy.PhoneWindow@316250640 (0x12d99a10)
|   mWindowAdded = true
|   mWindowManager = android.view.WindowManagerImpl@316253648 (0x12d9a5d0)
|   mInflater = com.android.internal.policy.PhoneLayoutInflater@316252872 (0x12d9a2c8)
|   mOverrideConfiguration = null
|   mResources = android.content.res.Resources@316253840 (0x12d9a690)
|   mTheme = android.content.res.Resources$Theme@316253880 (0x12d9a6b8)
|   mThemeResource = 2131820965
|   mBase = android.content.ContextWrapper@317091192 (0x12e66d78)
|   shadow$_klass_ = com.corbone.beno.client.android.activity.TabHostActivity
|   shadow$_monitor_ = -2024538872
* Instance of com.ncapdevi.fragnav.FragNavController
|   static $class$methods = 3999014664
|   static EXTRA_CURRENT_FRAGMENT = "com.ncapdevi.fragnav.FragNavController:EXTRA_CURRENT_FRAGMENT"
|   static $class$primitiveType = 131072
|   static $class$dexTypeIndex = 5548
|   static $class$numReferenceStaticFields = 5
|   static $class$extData = null
|   static $class$sFields = 3999013864
|   static $class$classLoader = dalvik.system.PathClassLoader@315181064 (0x12c94808)
|   static Companion = com.ncapdevi.fragnav.FragNavController$Companion@318579240 (0x12fd2228)
|   static $class$classSize = 464
|   static $class$referenceInstanceOffsets = 4095
|   static $class$objectSizeAllocFastPath = 80
|   static TAB19 = 18
|   static TAB18 = 17
|   static $class$vtable = null
|   static TAB17 = 16
|   static TAB16 = 15
|   static TAB15 = 14
|   static $class$dexCache = java.lang.DexCache@315460960 (0x12cd8d60)
|   static $class$componentType = null
|   static $class$name = "com.ncapdevi.fragnav.FragNavController"
|   static $class$objectSize = 74
|   static $class$numReferenceInstanceFields = 12
|   static TAB1 = 0
|   static TAB2 = 1
|   static TAB3 = 2
|   static TAB4 = 3
|   static NO_TAB = -1
|   static TAB5 = 4
|   static $class$ifTable = java.lang.Object[0]@1896352608 (0x71080b60)
|   static TAB14 = 13
|   static TAB6 = 5
|   static TAB13 = 12
|   static TAB7 = 6
|   static TAB12 = 11
|   static TAB8 = 7
|   static TAB11 = 10
|   static TAB9 = 8
|   static DETACH = 0
|   static TAB10 = 9
|   static EXTRA_FRAGMENT_STACK = "com.ncapdevi.fragnav.FragNavController:EXTRA_FRAGMENT_STACK"
|   static $class$status = -536870912
|   static $class$accessFlags = 524305
|   static $class$clinitThreadId = 12204
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$dexClassDefIndex = 2979
|   static EXTRA_TAG_COUNT = "com.ncapdevi.fragnav.FragNavController:EXTRA_TAG_COUNT"
|   static $class$virtualMethodsOffset = 28
|   static TAB20 = 19
|   static HIDE = 1
|   static $class$copiedMethodsOffset = 70
|   static $class$superClass = java.lang.Object
|   static REMOVE = 3
|   static EXTRA_SELECTED_TAB_INDEX = "com.ncapdevi.fragnav.FragNavController:EXTRA_SELECTED_TAB_INDEX"
|   static $class$classFlags = 0
|   static $class$shadow$_monitor_ = 0
|   static $class$iFields = 3999014368
|   static DETACH_ON_NAVIGATE_HIDE_ON_SWITCH = 2
|   static $classOverhead = byte[216]@315606449 (0x12cfc5b1)
|   static MAX_NUM_TABS = 20
|   containerId = 2131362087
|   createEager = false
|   currentStackIndex = 1
|   defaultTransactionOptions = com.ncapdevi.fragnav.FragNavTransactionOptions@317196256 (0x12e807e0)
|   executingTransaction = false
|   fragNavLogger = null
|   fragNavTabHistoryController = com.ncapdevi.fragnav.tabhistory.CurrentTabHistoryController@317196304 (0x12e80810)
|   fragmentCache = java.util.LinkedHashMap@317196320 (0x12e80820)
|   fragmentHideStrategy = 0
|   fragmentManger = androidx.fragment.app.FragmentManagerImpl@316246864 (0x12d98b50)
|   fragmentStacksTags = java.util.ArrayList@317196376 (0x12e80858)
|   mCurrentDialogFrag = null
|   mCurrentFrag = com.corbone.beno.client.android.fragment.ListWallPostsFragment@316241080 (0x12d974b8)
|   navigationStrategy = com.ncapdevi.fragnav.tabhistory.CurrentTabStrategy@317196400 (0x12e80870)
|   rootFragmentListener = null
|   rootFragments = java.util.ArrayList@317196408 (0x12e80878)
|   tagCount = 5
|   transactionListener = null
|   shadow$_klass_ = com.ncapdevi.fragnav.FragNavController
|   shadow$_monitor_ = 0
* Instance of androidx.fragment.app.FragmentManagerImpl
|   static $class$status = -536870912
|   static ANIM_STYLE_FADE_ENTER = 5
|   static $class$methods = 4059851136
|   static $class$primitiveType = 131072
|   static $class$dexTypeIndex = 1908
|   static $class$numReferenceStaticFields = 10
|   static $class$accessFlags = 524304
|   static $class$clinitThreadId = 12204
|   static $class$shadow$_klass_ = java.lang.Class
|   static ANIM_STYLE_OPEN_ENTER = 1
|   static $class$extData = null
|   static $class$sFields = 4059850352
|   static $class$dexClassDefIndex = 4396
|   static $class$classLoader = dalvik.system.PathClassLoader@315181064 (0x12c94808)
|   static DECELERATE_QUINT = android.view.animation.DecelerateInterpolator@318501640 (0x12fbf308)
|   static $class$classSize = 645
|   static ANIM_STYLE_FADE_EXIT = 6
|   static ANIM_STYLE_CLOSE_EXIT = 4
|   static $class$referenceInstanceOffsets = 4194303
|   static $class$virtualMethodsOffset = 31
|   static $class$objectSizeAllocFastPath = 112
|   static VIEW_STATE_TAG = "android:view_state"
|   static ACCELERATE_QUINT = android.view.animation.AccelerateInterpolator@318501600 (0x12fbf2e0)
|   static TARGET_STATE_TAG = "android:target_state"
|   static $class$copiedMethodsOffset = 132
|   static $class$vtable = null
|   static sAnimationListenerField = java.lang.reflect.Field@318501656 (0x12fbf318)
|   static $class$superClass = androidx.fragment.app.FragmentManager
|   static ANIM_STYLE_OPEN_EXIT = 2
|   static $class$dexCache = java.lang.DexCache@315460960 (0x12cd8d60)
|   static ANIM_DUR = 220
|   static ANIM_STYLE_CLOSE_ENTER = 3
|   static $class$componentType = null
|   static $class$name = null
|   static $class$objectSize = 110
|   static DECELERATE_CUBIC = android.view.animation.DecelerateInterpolator@318501624 (0x12fbf2f8)
|   static TARGET_REQUEST_CODE_STATE_TAG = "android:target_req_state"
|   static $class$numReferenceInstanceFields = 22
|   static USER_VISIBLE_HINT_TAG = "android:user_visible_hint"
|   static $class$classFlags = 0
|   static $class$shadow$_monitor_ = 0
|   static $class$iFields = 4059850648
|   static TAG = "FragmentManager"
|   static $class$ifTable = java.lang.Object[4]@318501544 (0x12fbf2a8)
|   static $classOverhead = byte[452]@315704345 (0x12d14419)
|   static ACCELERATE_CUBIC = android.view.animation.AccelerateInterpolator@318501576 (0x12fbf2c8)
|   static DEBUG = false
|   mActive = android.util.SparseArray@317210728 (0x12e84068)
|   mAdded = java.util.ArrayList@317210752 (0x12e84080)
|   mAvailBackStackIndices = null
|   mBackStack = null
|   mBackStackChangeListeners = null
|   mBackStackIndices = null
|   mContainer = androidx.fragment.app.FragmentActivity$HostCallbacks@316246976 (0x12d98bc0)
|   mCreatedMenus = java.util.ArrayList@317210776 (0x12e84098)
|   mCurState = 4
|   mDestroyed = false
|   mExecCommit = androidx.fragment.app.FragmentManagerImpl$1@317210800 (0x12e840b0)
|   mExecutingActions = false
|   mHavePendingDeferredStart = false
|   mHost = androidx.fragment.app.FragmentActivity$HostCallbacks@316246976 (0x12d98bc0)
|   mLifecycleCallbacks = java.util.concurrent.CopyOnWriteArrayList@317210816 (0x12e840c0)
|   mNeedMenuInvalidate = false
|   mNextFragmentIndex = 6
|   mNoTransactionsBecause = null
|   mParent = null
|   mPendingActions = java.util.ArrayList@317210832 (0x12e840d0)
|   mPostponedTransactions = null
|   mPrimaryNav = null
|   mSavedNonConfig = null
|   mStateArray = null
|   mStateBundle = null
|   mStateSaved = false
|   mStopped = false
|   mTmpAddedFragments = java.util.ArrayList@317210856 (0x12e840e8)
|   mTmpIsPop = java.util.ArrayList@317210880 (0x12e84100)
|   mTmpRecords = java.util.ArrayList@317210904 (0x12e84118)
|   shadow$_klass_ = androidx.fragment.app.FragmentManagerImpl
|   shadow$_monitor_ = 0
* Instance of android.util.SparseArray
|   static $class$status = -536870912
|   static $class$methods = 1903669988
|   static $class$primitiveType = 131072
|   static $class$dexTypeIndex = 4154
|   static $class$numReferenceStaticFields = 1
|   static $class$accessFlags = 524289
|   static $class$clinitThreadId = 0
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$extData = null
|   static $class$sFields = 1902320368
|   static $class$dexClassDefIndex = 1750
|   static $class$classLoader = null
|   static $class$classSize = 248
|   static $class$referenceInstanceOffsets = 3
|   static $class$virtualMethodsOffset = 4
|   static $class$objectSizeAllocFastPath = 24
|   static DELETED = java.lang.Object@1897591592 (0x711af328)
|   static $class$copiedMethodsOffset = 24
|   static $class$vtable = null
|   static $class$superClass = java.lang.Object
|   static $class$dexCache = java.lang.DexCache@1897591112 (0x711af148)
|   static $class$componentType = null
|   static $class$name = "android.util.SparseArray"
|   static $class$objectSize = 21
|   static $class$numReferenceInstanceFields = 2
|   static $class$classFlags = 0
|   static $class$shadow$_monitor_ = 536870912
|   static $class$iFields = 1902320388
|   static $class$ifTable = java.lang.Object[2]@1898010280 (0x712156a8)
|   static $classOverhead = byte[120]@1899207361 (0x71339ac1)
|   mGarbage = false
|   mKeys = int[11]@317469160 (0x12ec31e8)
|   mSize = 5
|   mValues = java.lang.Object[11]@317469216 (0x12ec3220)
|   shadow$_klass_ = android.util.SparseArray
|   shadow$_monitor_ = 0
* Array of java.lang.Object[]
|   [0] = com.corbone.beno.client.android.fragment.EmptyFragment@317469272 (0x12ec3258)
|   [1] = com.corbone.beno.client.android.fragment.KnoadDetailFragment@317469424 (0x12ec32f0)
|   [2] = com.corbone.beno.client.android.fragment.ListSummaryItemsFragment@317221696 (0x12e86b40)
|   [3] = com.bumptech.glide.manager.SupportRequestManagerFragment@317211976 (0x12e84548)
|   [4] = com.corbone.beno.client.android.fragment.ListWallPostsFragment@316241080 (0x12d974b8)
|   [5] = null
|   [6] = null
|   [7] = null
|   [8] = null
|   [9] = null
|   [10] = null
* Instance of com.corbone.beno.client.android.fragment.ListSummaryItemsFragment
|   static $class$status = -536870912
|   static $class$methods = 3956371808
|   static $class$primitiveType = 131072
|   static $change = null
|   static $class$dexTypeIndex = 252
|   static $class$numReferenceStaticFields = 1
|   static $class$accessFlags = 524289
|   static $class$clinitThreadId = 12204
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$extData = null
|   static $class$sFields = 3956371768
|   static $class$dexClassDefIndex = 160
|   static $class$classLoader = dalvik.system.PathClassLoader@315181064 (0x12c94808)
|   static $class$classSize = 912
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$virtualMethodsOffset = 7
|   static $class$objectSizeAllocFastPath = 192
|   static serialVersionUID = -6479134344003965144
|   static $class$copiedMethodsOffset = 17
|   static $class$vtable = null
|   static $class$superClass = com.corbone.beno.client.android.fragment.base.ListSummaryItemsBase
|   static $class$dexCache = java.lang.DexCache@316058080 (0x12d6a9e0)
|   static $class$componentType = null
|   static $class$name = "com.corbone.beno.client.android.fragment.ListSummaryItemsFragment"
|   static $class$objectSize = 186
|   static $class$numReferenceInstanceFields = 0
|   static $class$classFlags = 0
|   static $class$shadow$_monitor_ = -1963309916
|   static $class$iFields = 0
|   static $class$ifTable = java.lang.Object[18]@318436048 (0x12faf2d0)
|   static $classOverhead = byte[776]@315914129 (0x12d47791)
|   SEARCHVIEW_ENTER_BUTTON = 2131492873
|   adapter = com.corbone.beno.client.android.adapter.MultipleInfoAdapter@317222664 (0x12e86f08)
|   destroyableObjects = java.util.ArrayList@317222824 (0x12e86fa8)
|   deviceWidth = 420
|   isRefreshRequest = true
|   loadMore = false
|   offset = 0
|   pullToRefreshLayout = androidx.swiperefreshlayout.widget.SwipeRefreshLayout@317222848 (0x12e86fc0)
|   recyclerView = androidx.recyclerview.widget.RecyclerView@317223608 (0x12e872b8)
|   searchViewHelper = com.corbone.beno.client.android.utils.SearchViewHelper@317224480 (0x12e87620)
|   loaded = false
|   weakActivity = java.lang.ref.WeakReference@317224496 (0x12e87630)
|   mAdded = false
|   mAnimationInfo = androidx.fragment.app.Fragment$AnimationInfo@317224520 (0x12e87648)
|   mArguments = android.os.Bundle@1897727168 (0x711d04c0)
|   mBackStackNesting = 0
|   mCalled = true
|   mChildFragmentManager = androidx.fragment.app.FragmentManagerImpl@317221504 (0x12e86a80)
|   mChildNonConfig = null
|   mContainer = null
|   mContainerId = 2131362087
|   mDeferStart = false
|   mDetached = true
|   mFragmentId = 2131362087
|   mFragmentManager = androidx.fragment.app.FragmentManagerImpl@316246864 (0x12d98b50)
|   mFromLayout = false
|   mHasMenu = true
|   mHidden = false
|   mHiddenChanged = false
|   mHost = androidx.fragment.app.FragmentActivity$HostCallbacks@316246976 (0x12d98bc0)
|   mInLayout = false
|   mIndex = 2
|   mInnerView = null
|   mIsCreated = true
|   mIsNewlyAdded = false
|   mLayoutInflater = com.android.internal.policy.PhoneLayoutInflater@317224600 (0x12e87698)
|   mLifecycleRegistry = androidx.lifecycle.LifecycleRegistry@317224648 (0x12e876c8)
|   mMenuVisible = true
|   mParentFragment = null
|   mPerformedCreateView = false
|   mPostponedAlpha = 0.0
|   mRemoving = false
|   mRestored = true
|   mRetainInstance = false
|   mRetaining = false
|   mSavedFragmentState = null
|   mSavedUserVisibleHint = null
|   mSavedViewState = android.util.SparseArray@317224680 (0x12e876e8)
|   mState = 1
|   mTag = "com.corbone.beno.client.android.fragment.ListSummaryItemsFragment3"
|   mTarget = null
|   mTargetIndex = -1
|   mTargetRequestCode = 0
|   mUserVisibleHint = true
|   mView = null
|   mViewLifecycleOwner = null
|   mViewLifecycleOwnerLiveData = androidx.lifecycle.MutableLiveData@317224792 (0x12e87758)
|   mViewLifecycleRegistry = androidx.lifecycle.LifecycleRegistry@317224832 (0x12e87780)
|   mViewModelStore = androidx.lifecycle.ViewModelStore@317224864 (0x12e877a0)
|   mWho = "android:fragment:2"
|   shadow$_klass_ = com.corbone.beno.client.android.fragment.ListSummaryItemsFragment
|   shadow$_monitor_ = -2031295120
* Instance of androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|   static DEFAULT = 1
|   static $class$status = -536870912
|   static ANIMATE_TO_START_DURATION = 200
|   static $class$methods = 3974148016
|   static $class$primitiveType = 131072
|   static CIRCLE_BG_LIGHT = -328966
|   static LOG_TAG = "SwipeRefreshLayout"
|   static MAX_ALPHA = 255
|   static $class$dexTypeIndex = 2420
|   static $class$numReferenceStaticFields = 2
|   static $class$accessFlags = 524289
|   static $class$clinitThreadId = 12204
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$extData = null
|   static $class$sFields = 3974147056
|   static $class$dexClassDefIndex = 4507
|   static DRAG_RATE = 0.5
|   static $class$classLoader = dalvik.system.PathClassLoader@315181064 (0x12c94808)
|   static LARGE = 0
|   static $class$classSize = 4136
|   static INVALID_POINTER = -1
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$virtualMethodsOffset = 19
|   static $class$objectSizeAllocFastPath = 760
|   static CIRCLE_DIAMETER = 40
|   static $class$copiedMethodsOffset = 68
|   static $class$vtable = null
|   static $class$superClass = android.view.ViewGroup
|   static $class$dexCache = java.lang.DexCache@315460960 (0x12cd8d60)
|   static DEFAULT_SLINGSHOT_DISTANCE = -1
|   static ANIMATE_TO_TRIGGER_DURATION = 200
|   static MAX_PROGRESS_ANGLE = 0.8
|   static $class$componentType = null
|   static $class$name = "androidx.swiperefreshlayout.widget.SwipeRefreshLayout"
|   static $class$objectSize = 756
|   static ALPHA_ANIMATION_DURATION = 300
|   static $class$numReferenceInstanceFields = 18
|   static DEFAULT_CIRCLE_TARGET = 64
|   static LAYOUT_ATTRS = int[1]@318591536 (0x12fd5230)
|   static $class$classFlags = 0
|   static $class$shadow$_monitor_ = 0
|   static CIRCLE_DIAMETER_LARGE = 56
|   static $class$iFields = 3974147368
|   static DECELERATE_INTERPOLATION_FACTOR = 2.0
|   static $class$ifTable = java.lang.Object[14]@318591392 (0x12fd51a0)
|   static STARTING_PROGRESS_ALPHA = 76
|   static $classOverhead = byte[3936]@315575697 (0x12cf4d91)
|   static SCALE_DOWN_DURATION = 150
|   mActivePointerId = 0
|   mAlphaMaxAnimation = null
|   mAlphaStartAnimation = null
|   mAnimateToCorrectPosition = androidx.swiperefreshlayout.widget.SwipeRefreshLayout$6@317456384 (0x12ec0000)
|   mAnimateToStartPosition = androidx.swiperefreshlayout.widget.SwipeRefreshLayout$7@317456504 (0x12ec0078)
|   mChildScrollUpCallback = null
|   mCircleDiameter = 105
|   mCircleView = androidx.swiperefreshlayout.widget.CircleImageView@317456624 (0x12ec00f0)
|   mCircleViewIndex = 1
|   mCurrentTargetOffsetTop = -105
|   mCustomSlingshotDistance = 0
|   mDecelerateInterpolator = android.view.animation.DecelerateInterpolator@317457192 (0x12ec0328)
|   mFrom = 0
|   mInitialDownY = 288.22266
|   mInitialMotionY = 0.0
|   mIsBeingDragged = false
|   mListener = com.corbone.beno.client.android.fragment.ListSummaryItemsFragment@317221696 (0x12e86b40)
|   mMediumAnimationDuration = 400
|   mNestedScrollInProgress = false
|   mNestedScrollingChildHelper = androidx.core.view.NestedScrollingChildHelper@317457208 (0x12ec0338)
|   mNestedScrollingParentHelper = androidx.core.view.NestedScrollingParentHelper@317457240 (0x12ec0358)
|   mNotify = false
|   mOriginalOffsetTop = -105
|   mParentOffsetInWindow = int[2]@317457256 (0x12ec0368)
|   mParentScrollConsumed = int[2]@317457280 (0x12ec0380)
|   mProgress = androidx.swiperefreshlayout.widget.CircularProgressDrawable@317457304 (0x12ec0398)
|   mRefreshListener = androidx.swiperefreshlayout.widget.SwipeRefreshLayout$1@317457368 (0x12ec03d8)
|   mRefreshing = false
|   mReturningToStart = false
|   mScale = false
|   mScaleAnimation = null
|   mScaleDownAnimation = null
|   mScaleDownToStartAnimation = null
|   mSpinnerOffsetEnd = 168
|   mStartingScale = 0.0
|   mTarget = androidx.recyclerview.widget.RecyclerView@317223608 (0x12e872b8)
|   mTotalDragDistance = 168.0
|   mTotalUnconsumed = 0.0
|   mTouchSlop = 21
|   mUsingCustomStart = false
|   mAnimationListener = null
|   mCachePaint = null
|   mChildCountWithTransientState = 0
|   mChildTransformation = null
|   mChildUnhandledKeyListeners = 0
|   mChildren = android.view.View[12]@317457384 (0x12ec03e8)
|   mChildrenCount = 2
|   mChildrenInterestedInDrag = null
|   mCurrentDragChild = null
|   mCurrentDragStartEvent = null
|   mDefaultFocus = null
|   mDisappearingChildren = null
|   mFirstHoverTarget = null
|   mFirstTouchTarget = null
|   mFocused = null
|   mFocusedInCluster = null
|   mGroupFlags = 2245715
|   mHoveredSelf = false
|   mInvalidateRegion = null
|   mInvalidationTransformation = null
|   mIsInterestedInDrag = false
|   mLastTouchDownIndex = 0
|   mLastTouchDownTime = 307823782
|   mLastTouchDownX = 417.35962
|   mLastTouchDownY = 288.22266
|   mLayoutAnimationController = null
|   mLayoutCalledWhileSuppressed = false
|   mLayoutMode = -1
|   mLayoutTransitionListener = android.view.ViewGroup$4@317457448 (0x12ec0428)
|   mLocalPoint = null
|   mNestedScrollAxes = 0
|   mOnHierarchyChangeListener = null
|   mPersistentDrawingCache = 2
|   mPreSortedChildren = java.util.ArrayList@317457464 (0x12ec0438)
|   mSuppressLayout = false
|   mTempPoint = float[2]@317457488 (0x12ec0450)
|   mTooltipHoverTarget = null
|   mTooltipHoveredSelf = false
|   mTransientIndices = null
|   mTransientViews = null
|   mTransition = null
|   mTransitioningViews = null
|   mVisibilityChangingChildren = null
|   mAccessibilityCursorPosition = -1
|   mAccessibilityDelegate = null
|   mAccessibilityPaneTitle = null
|   mAccessibilityTraversalAfterId = -1
|   mAccessibilityTraversalBeforeId = -1
|   mAccessibilityViewId = -1
|   mAnimator = null
|   mAttachInfo = null
|   mAttributes = null
|   mAutofillHints = null
|   mAutofillId = null
|   mAutofillViewId = -1
|   mBackground = null
|   mBackgroundRenderNode = null
|   mBackgroundResource = 0
|   mBackgroundSizeChanged = true
|   mBackgroundTint = null
|   mBottom = 1453
|   mCachingFailed = false
|   mClipBounds = null
|   mContentDescription = null
|   mContext = com.corbone.beno.client.android.activity.TabHostActivity@316248840 (0x12d99308)
|   mCurrentAnimation = null
|   mDefaultFocusHighlight = null
|   mDefaultFocusHighlightCache = null
|   mDefaultFocusHighlightEnabled = true
|   mDefaultFocusHighlightSizeChanged = true
|   mDrawableState = int[3]@1898293224 (0x7125a7e8)
|   mDrawingCache = null
|   mDrawingCacheBackgroundColor = 0
|   mFloatingTreeObserver = null
|   mForegroundInfo = null
|   mFrameMetricsObservers = null
|   mGhostView = null
|   mHasPerformedLongPress = false
|   mID = 2131362140
|   mIgnoreNextUpEvent = false
|   mInContextButtonPress = false
|   mInputEventConsistencyVerifier = null
|   mKeyedTags = null
|   mLabelForId = -1
|   mLastIsOpaque = false
|   mLayerPaint = null
|   mLayerType = 0
|   mLayoutInsets = null
|   mLayoutParams = androidx.constraintlayout.widget.ConstraintLayout$LayoutParams@317457512 (0x12ec0468)
|   mLeft = 0
|   mLeftPaddingDefined = false
|   mListenerInfo = null
|   mLongClickX = NaN
|   mLongClickY = NaN
|   mMatchIdPredicate = null
|   mMatchLabelForPredicate = null
|   mMeasureCache = android.util.LongSparseLongArray@317457792 (0x12ec0580)
|   mMeasuredHeight = 1453
|   mMeasuredWidth = 1080
|   mMinHeight = 0
|   mMinWidth = 0
|   mNestedScrollingParent = null
|   mNextClusterForwardId = -1
|   mNextFocusDownId = -1
|   mNextFocusForwardId = -1
|   mNextFocusLeftId = -1
|   mNextFocusRightId = -1
|   mNextFocusUpId = -1
|   mOldHeightMeasureSpec = 1073743277
|   mOldWidthMeasureSpec = 1073742904
|   mOutlineProvider = android.view.ViewOutlineProvider$1@1897749000 (0x711d5a08)
|   mOverScrollMode = 1
|   mOverlay = null
|   mPaddingBottom = 0
|   mPaddingLeft = 0
|   mPaddingRight = 0
|   mPaddingTop = 0
|   mParent = androidx.constraintlayout.widget.ConstraintLayout@317236040 (0x12e8a348)
|   mPendingCheckForLongPress = null
|   mPendingCheckForTap = null
|   mPerformClick = null
|   mPointerIcon = null
|   mPrivateFlags = -2128472048
|   mPrivateFlags2 = 1610819112
|   mPrivateFlags3 = 0
|   mRecreateDisplayList = false
|   mRenderNode = android.view.RenderNode@317457816 (0x12ec0598)
|   mResources = android.content.res.Resources@316253840 (0x12d9a690)
|   mRight = 1080
|   mRightPaddingDefined = false
|   mRoundScrollbarRenderer = null
|   mRunQueue = null
|   mScrollCache = null
|   mScrollIndicatorDrawable = null
|   mScrollX = 0
|   mScrollY = 0
|   mSendViewScrolledAccessibilityEvent = null
|   mSendingHoverAccessibilityEvents = false
|   mStartActivityRequestWho = null
|   mStateListAnimator = null
|   mSystemUiVisibility = 0
|   mTag = null
|   mTempNestedScrollConsumed = null
|   mTooltipInfo = null
|   mTop = 0
|   mTouchDelegate = null
|   mTouchSlop = 21
|   mTransformationInfo = null
|   mTransientStateCount = 0
|   mTransitionName = null
|   mUnscaledDrawingCache = null
|   mUnsetPressedState = null
|   mUserPaddingBottom = 0
|   mUserPaddingEnd = -2147483648
|   mUserPaddingLeft = 0
|   mUserPaddingLeftInitial = 0
|   mUserPaddingRight = 0
|   mUserPaddingRightInitial = 0
|   mUserPaddingStart = -2147483648
|   mVerticalScrollFactor = 0.0
|   mVerticalScrollbarPosition = 0
|   mViewFlags = 402653200
|   mVisibilityChangeForAutofillHandler = null
|   mWindowAttachCount = 1
|   shadow$_klass_ = androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|   shadow$_monitor_ = 0
* Instance of androidx.constraintlayout.widget.ConstraintLayout
|   static $class$status = -536870912
|   static $class$methods = 4003579848
|   static $class$primitiveType = 131072
|   static USE_CONSTRAINTS_HELPER = true
|   static $class$dexTypeIndex = 1409
|   static $class$numReferenceStaticFields = 2
|   static $class$accessFlags = 524289
|   static $class$clinitThreadId = 12204
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$extData = null
|   static DESIGN_INFO_ID = 0
|   static $class$sFields = 4003579400
|   static $class$dexClassDefIndex = 469
|   static $class$classLoader = dalvik.system.PathClassLoader@315181064 (0x12c94808)
|   static $class$classSize = 4056
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$virtualMethodsOffset = 11
|   static $class$objectSizeAllocFastPath = 696
|   static $class$copiedMethodsOffset = 44
|   static $class$vtable = null
|   static $class$superClass = android.view.ViewGroup
|   static $class$dexCache = java.lang.DexCache@315460960 (0x12cd8d60)
|   static $class$componentType = null
|   static $class$name = "androidx.constraintlayout.widget.ConstraintLayout"
|   static $class$objectSize = 696
|   static $class$numReferenceInstanceFields = 7
|   static VERSION = "ConstraintLayout-1.1.3"
|   static $class$classFlags = 0
|   static $class$shadow$_monitor_ = 0
|   static $class$iFields = 4003579520
|   static TAG = "ConstraintLayout"
|   static $class$ifTable = java.lang.Object[10]@318586176 (0x12fd3d40)
|   static $classOverhead = byte[3916]@315584137 (0x12cf6e89)
|   static DEBUG = false
|   static CACHE_MEASURED_DIMENSION = false
|   static ALLOWS_EMBEDDED = false
|   mChildrenByIds = android.util.SparseArray@317236776 (0x12e8a628)
|   mConstraintHelpers = java.util.ArrayList@317236800 (0x12e8a640)
|   mConstraintSet = null
|   mConstraintSetId = -1
|   mDesignIds = java.util.HashMap@317236824 (0x12e8a658)
|   mDirtyHierarchy = true
|   mLastMeasureHeight = -1
|   mLastMeasureHeightMode = 0
|   mLastMeasureHeightSize = -1
|   mLastMeasureWidth = -1
|   mLastMeasureWidthMode = 0
|   mLastMeasureWidthSize = -1
|   mLayoutWidget = androidx.constraintlayout.solver.widgets.ConstraintWidgetContainer@317236864 (0x12e8a680)
|   mMaxHeight = 2147483647
|   mMaxWidth = 2147483647
|   mMetrics = null
|   mMinHeight = 0
|   mMinWidth = 0
|   mOptimizationLevel = 7
|   mVariableDimensionsWidgets = java.util.ArrayList@317237232 (0x12e8a7f0)
|   mAnimationListener = null
|   mCachePaint = null
|   mChildCountWithTransientState = 0
|   mChildTransformation = null
|   mChildUnhandledKeyListeners = 0
|   mChildren = android.view.View[12]@317237256 (0x12e8a808)
|   mChildrenCount = 2
|   mChildrenInterestedInDrag = null
|   mCurrentDragChild = null
|   mCurrentDragStartEvent = null
|   mDefaultFocus = null
|   mDisappearingChildren = null
|   mFirstHoverTarget = null
|   mFirstTouchTarget = null
|   mFocused = null
|   mFocusedInCluster = null
|   mGroupFlags = 2244691
|   mHoveredSelf = false
|   mInvalidateRegion = null
|   mInvalidationTransformation = null
|   mIsInterestedInDrag = false
|   mLastTouchDownIndex = 1
|   mLastTouchDownTime = 307823782
|   mLastTouchDownX = 417.35962
|   mLastTouchDownY = 288.22266
|   mLayoutAnimationController = null
|   mLayoutCalledWhileSuppressed = false
|   mLayoutMode = -1
|   mLayoutTransitionListener = android.view.ViewGroup$4@317237320 (0x12e8a848)
|   mLocalPoint = null
|   mNestedScrollAxes = 0
|   mOnHierarchyChangeListener = null
|   mPersistentDrawingCache = 2
|   mPreSortedChildren = null
|   mSuppressLayout = false
|   mTempPoint = float[2]@317237336 (0x12e8a858)
|   mTooltipHoverTarget = null
|   mTooltipHoveredSelf = false
|   mTransientIndices = null
|   mTransientViews = null
|   mTransition = null
|   mTransitioningViews = null
|   mVisibilityChangingChildren = null
|   mAccessibilityCursorPosition = -1
|   mAccessibilityDelegate = null
|   mAccessibilityPaneTitle = null
|   mAccessibilityTraversalAfterId = -1
|   mAccessibilityTraversalBeforeId = -1
|   mAccessibilityViewId = -1
|   mAnimator = null
|   mAttachInfo = null
|   mAttributes = null
|   mAutofillHints = null
|   mAutofillId = null
|   mAutofillViewId = -1
|   mBackground = null
|   mBackgroundRenderNode = null
|   mBackgroundResource = 0
|   mBackgroundSizeChanged = true
|   mBackgroundTint = null
|   mBottom = 1453
|   mCachingFailed = false
|   mClipBounds = null
|   mContentDescription = null
|   mContext = com.corbone.beno.client.android.activity.TabHostActivity@316248840 (0x12d99308)
|   mCurrentAnimation = null
|   mDefaultFocusHighlight = null
|   mDefaultFocusHighlightCache = null
|   mDefaultFocusHighlightEnabled = true
|   mDefaultFocusHighlightSizeChanged = true
|   mDrawableState = int[3]@1898293224 (0x7125a7e8)
|   mDrawingCache = null
|   mDrawingCacheBackgroundColor = 0
|   mFloatingTreeObserver = null
|   mForegroundInfo = null
|   mFrameMetricsObservers = null
|   mGhostView = null
|   mHasPerformedLongPress = false
|   mID = -1
|   mIgnoreNextUpEvent = false
|   mInContextButtonPress = false
|   mInputEventConsistencyVerifier = null
|   mKeyedTags = null
|   mLabelForId = -1
|   mLastIsOpaque = false
|   mLayerPaint = null
|   mLayerType = 0
|   mLayoutInsets = null
|   mLayoutParams = android.widget.FrameLayout$LayoutParams@317237360 (0x12e8a870)
|   mLeft = 0
|   mLeftPaddingDefined = false
|   mListenerInfo = null
|   mLongClickX = NaN
|   mLongClickY = NaN
|   mMatchIdPredicate = null
|   mMatchLabelForPredicate = null
|   mMeasureCache = android.util.LongSparseLongArray@317237416 (0x12e8a8a8)
|   mMeasuredHeight = 1453
|   mMeasuredWidth = 1080
|   mMinHeight = 0
|   mMinWidth = 0
|   mNestedScrollingParent = null
|   mNextClusterForwardId = -1
|   mNextFocusDownId = -1
|   mNextFocusForwardId = -1
|   mNextFocusLeftId = -1
|   mNextFocusRightId = -1
|   mNextFocusUpId = -1
|   mOldHeightMeasureSpec = 1073743277
|   mOldWidthMeasureSpec = 1073742904
|   mOutlineProvider = android.view.ViewOutlineProvider$1@1897749000 (0x711d5a08)
|   mOverScrollMode = 1
|   mOverlay = null
|   mPaddingBottom = 0
|   mPaddingLeft = 0
|   mPaddingRight = 0
|   mPaddingTop = 0
|   mParent = null
|   mPendingCheckForLongPress = null
|   mPendingCheckForTap = null
|   mPerformClick = null
|   mPointerIcon = null
|   mPrivateFlags = -2128537424
|   mPrivateFlags2 = 1610819112
|   mPrivateFlags3 = 1
|   mRecreateDisplayList = false
|   mRenderNode = android.view.RenderNode@317237440 (0x12e8a8c0)
|   mResources = android.content.res.Resources@316253840 (0x12d9a690)
|   mRight = 1080
|   mRightPaddingDefined = false
|   mRoundScrollbarRenderer = null
|   mRunQueue = null
|   mScrollCache = null
|   mScrollIndicatorDrawable = null
|   mScrollX = 0
|   mScrollY = 0
|   mSendViewScrolledAccessibilityEvent = null
|   mSendingHoverAccessibilityEvents = false
|   mStartActivityRequestWho = null
|   mStateListAnimator = null
|   mSystemUiVisibility = 0
|   mTag = null
|   mTempNestedScrollConsumed = null
|   mTooltipInfo = null
|   mTop = 0
|   mTouchDelegate = null
|   mTouchSlop = 21
|   mTransformationInfo = null
|   mTransientStateCount = 0
|   mTransitionName = null
|   mUnscaledDrawingCache = null
|   mUnsetPressedState = null
|   mUserPaddingBottom = 0
|   mUserPaddingEnd = -2147483648
|   mUserPaddingLeft = 0
|   mUserPaddingLeftInitial = 0
|   mUserPaddingRight = 0
|   mUserPaddingRightInitial = 0
|   mUserPaddingStart = -2147483648
|   mVerticalScrollFactor = 0.0
|   mVerticalScrollbarPosition = 0
|   mViewFlags = 939524240
|   mVisibilityChangeForAutofillHandler = null
|   mWindowAttachCount = 1
|   shadow$_klass_ = androidx.constraintlayout.widget.ConstraintLayout
|   shadow$_monitor_ = 0
* Excluded Refs:
| Field: android.os.Message.obj
| Field: android.os.Message.next
| Field: android.os.Message.target
| Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
| Field: android.view.ViewGroup$ViewLocationHolder.mRoot
| Thread:FinalizerWatchdogDaemon (always)
| Thread:main (always)
| Thread:LeakCanary-Heap-Dump (always)
| Class:java.lang.ref.WeakReference (always)
| Class:java.lang.ref.SoftReference (always)
| Class:java.lang.ref.PhantomReference (always)
| Class:java.lang.ref.Finalizer (always)
| Class:java.lang.ref.FinalizerReference (always)
@mateherber
Copy link
Contributor

mateherber commented Nov 27, 2018

Hi @burakztrk,

You're leaking the activity context here hence FragNav and other views too. (Possibly toast can live longer than the activity). While this error is not an actual leak (will be garbage collected after a while) you can make it go away by using:

Toast.makeText(context.getApplicationContext(), message, Toast.LENGTH_SHORT).show();

instead of

Toast.makeText(context, message, Toast.LENGTH_SHORT).show();

@burakztrk
Copy link
Author

Ok.Thanks for answer.Im trying

@mihirrai
Copy link

I'm facing a similar issue and nowhere in my code am I using Toast.makeText, could you look into it further?

@burakztrk burakztrk reopened this Nov 28, 2018
@mateherber
Copy link
Contributor

In the above log it is clear that Toast is created. Maybe some of your 3rd party creates a Toast. @mihirrai please attach a log so we'll be able to see more

@nbumakov
Copy link

Hi, I have the same strange toast leek dump as burakztrk have. Leek happens exactly after calling switchTab. And I also don't use Toasts

@mateherber
Copy link
Contributor

@nbumakov @mihirrai @burakztrk

Okkay, I've dived deeper a bit (in the sample application) and could reproduce the "leak". It is not a real leak per se so if you check the android profiler you'll see no constant raise of memory.

What happens is ultimately we hold a reference to the fragmentmanager of the activity which still has a reference for the fragment (for a while) which has been detached (view destroyed) and since you put views in fields in the fragments we kinda "leak" those.

So for instance in the sample application we have something like

open class BaseFragment : Fragment() {
    var btn: Button? = null
    ...
    override fun onCreateView(...): View? {
        return inflater.inflate(R.layout.fragment_main, container, false)?.apply {
            btn = findViewById(R.id.button)
        }
    }

To not leak this btn view we need to add the following:

override fun onDestroyView() {
        super.onDestroyView()
        btn = null
}

or if you're using butterknife use unbind:
image

After this change I had no longer seen the leaks

For instance for the trace above make sure you null out the pullToRefreshLayout view field in the onDestroyView

@ncapdevi
Copy link
Owner

@mateherber Thanks for responding to this

@ugurcany
Copy link

@ncapdevi I don't think this issue should be closed. Although I applied unbinding as @mateherber suggested, the memory leak issue still persists.

@mihirrai
Copy link

@ugurcany That's because to avoid the leak, we also have to make the interface nullable and we can't afford to do that.

@mateherber
Copy link
Contributor

Well this is not a real leak just leakcanary reports it because the view references live longer than the lifecycle of the activity. This has not much to do with FragNav and also solution is to not leak any context outside the activity life cycle which fragnav does not. I think this can stay closed while somebody finds evidence that FragNav is leaking the views.

@ugurcany If you're using kotlin you could use the Kotlin Android Extensions https://kotlinlang.org/docs/tutorials/android-plugin.html which uses maps in the background and saves you the effort.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants