ncapdevi / FragNav

An Android library for managing multiple stacks of fragments
1.5k stars 220 forks source link

FragNav3.0 has memory leak? #179

Closed burakztrk closed 5 years ago

burakztrk commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

Ok.Thanks for answer.Im trying

mihirrai commented 5 years ago

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

mateherber commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

@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 commented 5 years ago

@mateherber Thanks for responding to this

ugurcany commented 5 years ago

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

mihirrai commented 5 years ago

@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 commented 5 years ago

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.