guardianproject / haven

Haven is for people who need a way to protect their personal spaces and possessions without compromising their own privacy, through an Android app and on-device sensors
https://guardianproject.github.io/haven/
GNU General Public License v3.0
6.63k stars 728 forks source link

CameraFragment Leak #391

Open archie94 opened 5 years ago

archie94 commented 5 years ago

Trying out LeakCanary on the master branch.

Log:

* org.havenapp.main.ui.CameraFragment has leaked:
* thread HandlerThread.!(<Java Local>)! (named 'CameraViewController')
* ↳ thread HandlerThread.!(uncaughtExceptionHandler)! (named 'CameraViewController')
* ↳ Camera1.!(mCameraCallbacks)!
* ↳ CameraView$Callbacks.!(this$0)!
* ↳ CameraView.mContext
* ↳ MonitorActivity.mFragmentCamera
* ↳ CameraFragment

* Reference Key: f57d2c9d-e5f4-4e8c-8f44-740602373f96
* Device: Xiaomi Xiaomi POCO F1 beryllium
* Android Version: 9 API: 28 LeakCanary: 1.6.3 31007b4
* Durations: watch=169267ms, gc=191ms, heap dump=5439ms, analysis=15367ms

* Details:
* Instance of android.os.HandlerThread
|   static $class$classFlags = 0
|   static $class$superClass = java.lang.Thread
|   static $class$primitiveType = 131072
|   static $class$clinitThreadId = 0
|   static $class$numReferenceStaticFields = 0
|   static $class$status = -536870912
|   static $class$name = "android.os.HandlerThread"
|   static $class$accessFlags = 524289
|   static $class$copiedMethodsOffset = 9
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$methods = 1895053964
|   static $class$classLoader = null
|   static $class$dexTypeIndex = 866
|   static $class$numReferenceInstanceFields = 2
|   static $class$virtualMethodsOffset = 2
|   static $class$sFields = 0
|   static $class$objectSizeAllocFastPath = 152
|   static $class$iFields = 1893732208
|   static $class$shadow$_monitor_ = 536870912
|   static $class$componentType = null
|   static $class$extData = null
|   static $class$objectSize = 148
|   static $class$dexCache = java.lang.DexCache@1889632912 (0x70a18290)
|   static $class$classSize = 332
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$vtable = null
|   static $class$dexClassDefIndex = 200
|   static $classOverhead = byte[208]@1891144313 (0x70b89279)
|   static $class$ifTable = java.lang.Object[2]@1889701000 (0x70a28c88)
|   mHandler = null
|   mLooper = android.os.Looper@314839168 (0x12c41080)
|   mPriority = 0
|   mTid = 24392
|   blocker = null
|   blockerLock = java.lang.Object@318562720 (0x12fce1a0)
|   contextClassLoader = dalvik.system.PathClassLoader@314949000 (0x12c5bd88)
|   daemon = true
|   eetop = 0
|   group = java.lang.ThreadGroup@1883415488 (0x7042a3c0)
|   inheritableThreadLocals = null
|   inheritedAccessControlContext = java.security.AccessControlContext@318562728 (0x12fce1a8)
|   lock = java.lang.Object@318562736 (0x12fce1b0)
|   name = "CameraViewController"
|   nativeParkEventPointer = 0
|   nativePeer = 3569343488
|   parkBlocker = null
|   parkState = 1
|   priority = 5
|   single_step = false
|   stackSize = 0
|   started = true
|   stillborn = false
|   target = null
|   threadLocalRandomProbe = 0
|   threadLocalRandomSecondarySeed = 0
|   threadLocalRandomSeed = 0
|   threadLocals = java.lang.ThreadLocal$ThreadLocalMap@318562744 (0x12fce1b8)
|   threadQ = null
|   threadStatus = 0
|   tid = 15781
|   uncaughtExceptionHandler = com.otaliastudios.cameraview.Camera1@318562768 (0x12fce1d0)
|   shadow$_klass_ = android.os.HandlerThread
|   shadow$_monitor_ = 0
* Instance of android.os.HandlerThread
|   static $class$classFlags = 0
|   static $class$superClass = java.lang.Thread
|   static $class$primitiveType = 131072
|   static $class$clinitThreadId = 0
|   static $class$numReferenceStaticFields = 0
|   static $class$status = -536870912
|   static $class$name = "android.os.HandlerThread"
|   static $class$accessFlags = 524289
|   static $class$copiedMethodsOffset = 9
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$methods = 1895053964
|   static $class$classLoader = null
|   static $class$dexTypeIndex = 866
|   static $class$numReferenceInstanceFields = 2
|   static $class$virtualMethodsOffset = 2
|   static $class$sFields = 0
|   static $class$objectSizeAllocFastPath = 152
|   static $class$iFields = 1893732208
|   static $class$shadow$_monitor_ = 536870912
|   static $class$componentType = null
|   static $class$extData = null
|   static $class$objectSize = 148
|   static $class$dexCach
e = java.lang.DexCache@1889632912 (0x70a18290)
|   static $class$classSize = 332
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$vtable = null
|   static $class$dexClassDefIndex = 200
|   static $classOverhead = byte[208]@1891144313 (0x70b89279)
|   static $class$ifTable = java.lang.Object[2]@1889701000 (0x70a28c88)
|   mHandler = null
|   mLooper = android.os.Looper@314839168 (0x12c41080)
|   mPriority = 0
|   mTid = 24392
|   blocker = null
|   blockerLock = java.lang.Object@318562720 (0x12fce1a0)
|   contextClassLoader = dalvik.system.PathClassLoader@314949000 (0x12c5bd88)
|   daemon = true
|   eetop = 0
|   group = java.lang.ThreadGroup@1883415488 (0x7042a3c0)
|   inheritableThreadLocals = null
|   inheritedAccessControlContext = java.security.AccessControlContext@318562728 (0x12fce1a8)
|   lock = java.lang.Object@318562736 (0x12fce1b0)
|   name = "CameraViewController"
|   nativeParkEventPointer = 0
|   nativePeer = 3569343488
|   parkBlocker = null
|   parkState = 1
|   priority = 5
|   single_step = false
|   stackSize = 0
|   started = true
|   stillborn = false
|   target = null
|   threadLocalRandomProbe = 0
|   threadLocalRandomSecondarySeed = 0
|   threadLocalRandomSeed = 0
|   threadLocals = java.lang.ThreadLocal$ThreadLocalMap@318562744 (0x12fce1b8)
|   threadQ = null
|   threadStatus = 0
|   tid = 15781
|   uncaughtExceptionHandler = com.otaliastudios.cameraview.Camera1@318562768 (0x12fce1d0)
|   shadow$_klass_ = android.os.HandlerThread
|   shadow$_monitor_ = 0
* Instance of com.otaliastudios.cameraview.Camera1
|   static $class$classFlags = 0
|   static $class$superClass = com.otaliastudios.cameraview.CameraController
|   static $class$primitiveType = 131072
|   static $class$clinitThreadId = 24051
|   static $class$numReferenceStaticFields = 2
|   static $class$status = -536870912
|   static $class$name = "com.otaliastudios.cameraview.Camera1"
|   static $class$accessFlags = 524288
|   static $class$copiedMethodsOffset = 69
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$methods = 3972941656
|   static $class$classLoader = dalvik.system.PathClassLoader@314949000 (0x12c5bd88)
|   static $class$dexTypeIndex = 942
|   static $class$numReferenceInstanceFields = 2
|   static $class$virtualMethodsOffset = 42
|   static LOG = com.otaliastudios.cameraview.CameraLogger@317524184 (0x12ed08d8)
|   static $class$sFields = 3972941544
|   static $class$objectSizeAllocFastPath = 208
|   static $class$iFields = 3972941584
|   static $class$shadow$_monitor_ = 0
|   static TAG = "Camera1"
|   static $class$componentType = null
|   static $class$extData = null
|   static $class$objectSize = 204
|   static $class$dexCache = java.lang.DexCache@315773864 (0x12d253a8)
|   static $class$classSize = 488
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$vtable = null
|   static $class$dexClassDefIndex = 5827
|   static $classOverhead = byte[356]@315778585 (0x12d26619)
|   static $class$ifTable = java.lang.Object[14]@317524056 (0x12ed0858)
|   mCamera = null
|   mIsBound = false
|   mPostFocusResetDelay = 3000
|   mPostFocusResetRunnable = com.otaliastudios.cameraview.Camera1$1@318562976 (0x12fce2a0)
|   mAudio = com.otaliastudios.cameraview.Audio@317525240 (0x12ed0cf8)
|   mAudioBitRate = 0
|   mCameraCallbacks = com.otaliastudios.cameraview.CameraView$Callbacks@318562992 (0x12fce2b0)
|   mCameraId = 1
|   mCameraOptions = null
|   mCaptureSize = null
|   mCrashHandler = android.os.Handler@318563008 (0x12fce2c0)
|   mDeviceOrientation = 0
|   mDisplayOffset = 0
|   mExposureCorrectionTask = com.otaliastudios.cameraview.Task@318563040 (0x12fce2e0)
|   mExposureCorrectionValue = 0.0
|   mFacing = com.otaliastudios.cameraview.Facing@317515848 (0x12ece848)
|   mFlash = com.otaliastudios.cameraview.Flash@317515632 (0x12ece770)
|   mFlashTask = com.otaliastudios.cameraview.Task@318563064 (0x12fce2f8)
|   mFrameManager = com.otaliastudios.cameraview.FrameManager@318563088 (0x12fce310)
|   mHandler = com.otaliastudios.cameraview.WorkerHandler@318563112 (0x12fce328)
|   mHdr = com.otaliastudios.cameraview.Hdr@317515384 (0x12ece678)
|   mHdrTask = com.otaliastudios.cameraview.Task@318563128 (0x12fce338)
|   mLocation = null
|   mLocationTask = com.otaliastudios.cameraview.Task@318563152 (0x12fce350)
|   mMapper = com.otaliastudios.cameraview.Mapper1@318563176 (0x12fce368)
|   mMode = com.otaliastudios.cameraview.Mode@317514744 (0x12ece3f8)
|   mPictureRecorder = null
|   mPictureSizeSelector = com.otaliastudios.cameraview.SizeSelectors$6@318563184 (0x12fce370)
|   mPlaySounds = false
|   mPlaySoundsTask = com.otaliastudios.cameraview.Task@318563192 (0x12fce378)
|   mPreview = com.otaliastudios.cameraview.GlCameraPreview@318563216 (0x12fce390)
|   mPreviewFormat = 0
|   mPreviewStreamSize = null
|   mPreviewStreamSizeSelector = org.havenapp.main.ui.CameraViewHolder$2@318563288 (0x12fce3d8)
|   mSensorOffset = 270
|   mSnapshotMaxHeight = 2147483647
|   mSnapshotMaxWidth = 2147483647
|   mStartVideoTask = com.otaliastudios.cameraview.Task@318563304 (0x12fce3e8)
|   mState = 0
|   mVideoBitRate = 0
|   mVideoCodec = com.otaliastudios.cameraview.VideoCodec@315873200 (0x12d3d7b0)
|   mVideoMaxDuration = 0
|   mVideoMaxSize = 0
|   mVideoRecorder = null
|   mVideoSizeSelector = com.otaliastudios.cameraview.SizeSelectors$6@318563328 (0x12fce400)
|   mWhiteBalance = com.otaliastudios.cameraview.WhiteBalance@315872944 (0x12d3d6b0)
|   mWhiteBalanceTask = com.otaliastudios.cameraview.Task@318563336 (0x12fce408)
|   mZoomTask = com.otaliastudios.cameraview.Task@318563360 (0x12fce420)
|   mZoomValue = 0.0
|   shadow$_klass_ = com.otaliastudios.cameraview.Camera1
|   shadow$_monitor_ = 0
* Instance of com.otaliastudios.cameraview.CameraView$Callbacks
|   static $class$classFlags = 0
|   static $class$superClass = java.lang.Object
|   static $class$primitiveType = 131072
|   static $class$clinitThreadId = 24051
|   static $class$numReferenceStaticFields = 0
|   static $class$status = -536870912
|   static $class$name = null
|   static $class$accessFlags = 524288
|   static $class$copiedMethodsOffset = 14
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$methods = 3972935848
|   static $class$classLoader = dalvik.system.PathClassLoader@314949000 (0x12c5bd88)
|   static $class$dexTypeIndex = 983
|   static $class$numReferenceInstanceFields = 2
|   static $class$virtualMethodsOffset = 1
|   static $class$sFields = 0
|   static $class$objectSizeAllocFastPath = 16
|   static $class$iFields = 3972935808
|   static $class$shadow$_monitor_ = 0
|   static $class$componentType = null
|   static $class$extData = null
|   static $class$objectSize = 16
|   static $class$dexCache = java.lang.DexCache@315773864 (0x12d253a8)
|   static $class$classSize = 224
|   static $class$referenceInstanceOffsets = 3
|   static $class$vtable = null
|   static $class$dexClassDefIndex = 5828
|   static $classOverhead = byte[100]@315785641 (0x12d281a9)
|   static $class$ifTable = java.lang.Object[4]@317521880 (0x12ecffd8)
|   mLogger = com.otaliastudios.cameraview.CameraLogger@318668384 (0x12fe7e60)
|   this$0 = com.otaliastudios.cameraview.CameraView@318563472 (0x12fce490)
|   shadow$_klass_ = com.otaliastudios.cameraview.CameraView$Callbacks
|   shadow$_monitor_ = 0
* Instance of com.otaliastudios.cameraview.CameraView
|   static PERMISSION_REQUEST_CODE = 16
|   static $class$classFlags = 0
|   static $class$superClass = android.widget.FrameLayout
|   static $class$primitiveType = 131072
|   static $class$clinitThreadId = 24051
|   static $class$numReferenceStaticFields = 2
|   static $class$status = -536870912
|   static $class$name = "com.otaliastudios.cameraview.CameraView"
|   static $class$accessFlags = 524289
|   static $class$copiedMethodsOffset = 99
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$methods = 3977104024
|   static $class$classLoader = dalvik.system.PathClassLoader@314949000 (0x12c5bd88)
|   static $class$dexTypeIndex = 985
|   static $class$numReferenceInstanceFields = 16
|   static $class$virtualMethodsOffset = 19
|   static LOG = com.otaliastudios.cameraview.CameraLogger@317521808 (0x12ecff90)
|   static $class$sFields = 3977103640
|   static $class$objectSizeAllocFastPath = 720
|   static DEFAULT_PLAY_SOUNDS = true
|   static $class$iFields = 3977103712
|   static $class$shadow$_monitor_ = 0
|   static TAG = "CameraView"
|   static $class$componentType = null
|   static $class$extData = null
|   static $class$objectSize = 715
|   static $class$dexCache = java.lang.DexCache@315773864 (0x12d253a8)
|   static $class$classSize = 4325
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$vtable = null
|   static $class$dexClassDefIndex = 3514
|   static $classOverhead = byte[4188]@315785985 (0x12d28301)
|   static $class$ifTable = java.lang.Object[12]@317521688 (0x12ecff18)
|   mCameraCallbacks = com.otaliastudios.cameraview.CameraView$Callbacks@318562992 (0x12fce2b0)
|   mCameraController = com.otaliastudios.cameraview.Camera1@318562768 (0x12fce1d0)
|   mCameraPreview = com.otaliastudios.cameraview.GlCameraPreview@318563216 (0x12fce390)
|   mExperimental = true
|   mFrameProcessors = java.util.concurrent.CopyOnWriteArrayList@318654056 (0x12fe4668)
|   mFrameProcessorsHandler = com.otaliastudios.cameraview.WorkerHandler@318654072 (0x12fe4678)
|   mGestureMap = java.util.HashMap@318654088 (0x12fe4688)
|   mGridLinesLayout = com.otaliastudios.cameraview.GridLinesLayout@318654128 (0x12fe46b0)
|   mKeepScreenOn = false
|   mLifecycle = null
|   mListeners = java.util.concurrent.CopyOnWriteArrayList@318654616 (0x12fe4898)
|   mOrientationHelper = com.otaliastudios.cameraview.OrientationHelper@318654632 (0x12fe48a8)
|   mPinchGestureLayout = com.otaliastudios.cameraview.PinchGestureLayout@318654656 (0x12fe48c0)
|   mPlaySounds = false
|   mPreview = com.otaliastudios.cameraview.Preview@317514392 (0x12ece298)
|   mScrollGestureLayout = com.otaliastudios.cameraview.ScrollGestureLayout@318655328 (0x12fe4b60)
|   mSound = null
|   mTapGestureLayout = com.otaliastudios.cameraview.TapGestureLayout@318656000 (0x12fe4e00)
|   mUiHandler = android.os.Handler@318656680 (0x12fe50a8)
|   mForegroundPaddingBottom = 0
|   mForegroundPaddingLeft = 0
|   mForegroundPaddingRight = 0
|   mForegroundPaddingTop = 0
|   mMatchParentChildren = java.util.ArrayList@318656712 (0x12fe50c8)
|   mMeasureAllChildren = false
|   mAnimationListener = null
|   mCachePaint = null
|   mChildCountWithTransientState = 0
|   mChildTransformation = null
|   mChildUnhandledKeyListeners = 0
|   mChildren = android.view.View[12]@318656736 (0x12fe50e0)
|   mChildrenCount = 5
|   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 = 0
|   mLastTouchDownX = 0.0
|   mLastTouchDownY = 0.0
|   mLayoutAnimationController = null
|   mLayoutCalledWhileSuppressed = false
|   mLayoutMode = -1
|   mLayoutTransitionListener = android.view.ViewGroup$4@318656800 (0x12fe5120)
|   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 = null
|   mAttachedActivity = null
|   mAttributes = null
|   mAutofillHints = null
|   mAutofillId = null
|   mAutofillViewId = -1
|   mBackground = null
|   mBackgroundRenderNode = null
|   mBackgroundResource = 0
|   mBackgroundSizeChanged = true
|   mBackgroundTint = null
|   mBottom = 2027
|   mCachingFailed = false
|   mClipBounds = null
|   mContentDescription = null
|   mContext = org.havenapp.main.MonitorActivity@318564192 (0x12fce760)
|   mCurrentAnimation = null
|   mDefaultFocusHighlight = null
|   mDefaultFocusHighlightCache = null
|   mDefaultFocusHighlightEnabled = true
|   mDefaultFocusHighlightSizeChanged = true
|   mDrawableState = int[2]@1890142464 (0x70a94900)
|   mDrawingCache = null
|   mDrawingCacheBackgroundColor = 0
|   mFirst = true
|   mFloatingTreeObserver = null
|   mForegroundInfo = null
|   mFrameMetricsObservers = null
|   mGhostView = null
|   mHapticEnabledExplicitly = false
|   mHasPerformedLongPress = false
|   mID = 2131361910
|   mIgnoreNextUpEvent = false
|   mInContextButtonPress = false
|   mInputEventConsistencyVerifier = null
|   mIsWebView = false
|   mIsWebViewScroll = false
|   mKeyedTags = null
|   mLabelForId = -1
|   mLastIsOpaque = false
|   mLayerPaint = null
|   mLayerType = 0
|   mLayoutInsets = null
|   mLayoutParams = android.widget.FrameLayout$LayoutParams@318656816 (0x12fe5130)
|   mLeft = 0
|   mLeftPaddingDefined = false
|   mListenerInfo = null
|   mLongClickX = NaN
|   mLongClickY = NaN
|   mMatchIdPredicate = null
|   mMatchLabelForPredicate = null
|   mMeasureCache = android.util.LongSparseLongArray@318656872 (0x12fe5168)
|   mMeasuredHeight = 2027
|   mMeasuredWidth = 1080
|   mMinHeight = 0
|   mMinWidth = 0
|   mNestedScrollingParent = null
|   mNextClusterForwardId = -1
|   mNextFocusDownId = -1
|   mNextFocusForwardId = -1
|   mNextFocusLeftId = -1
|   mNextFocusRightId = -1
|   mNextFocusUpId = -1
|   mOldHeightMeasureSpec = 1073743851
|   mOldWidthMeasureSpec = 1073742904
|   mOutlineProvider = android.view.ViewOutlineProvider$1@1889734920 (0x70a31108)
|   mOverScrollMode = 1
|   mOverlay = null
|   mPaddingBottom = 0
|   mPaddingLeft = 0
|   mPaddingRight = 0
|   mPaddingTop = 0
|   mParent = android.widget.FrameLayout@318567016 (0x12fcf268)
|   mPendingCheckForLongPress = null
|   mPendingCheckForTap = null
|   mPerformClick = null
|   mPointerIcon = null
|   mPrivateFlags = -2128606672
|   mPrivateFlags2 = 1610819112
|   mPrivateFlags3 = 16
|   mRecreateDisplayList = false
|   mRenderNode = android.view.RenderNode@318656896 (0x12fe5180)
|   mResources = android.content.res.MiuiResources@318567688 (0x12fcf508)
|   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 = 22
|   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 = 469762064
|   mVisibilityChangeForAutofillHandler = null
|   mWindowAttachCount = 1
|   shadow$_klass_ = com.otaliastudios.cameraview.CameraView
|   shadow$_monitor_ = 0
* Instance of org.havenapp.main.MonitorActivity
|   static $class$classFlags = 0
|   static $class$superClass = androidx.appcompat.app.AppCompatActivity
|   static $class$primitiveType = 131072
|   static $class$clinitThreadId = 24051
|   static $class$numReferenceStaticFields = 1
|   static $class$status = -536870912
|   static $class$name = "org.havenapp.main.MonitorActivity"
|   static $class$accessFlags = 524289
|   static $class$copiedMethodsOffset = 43
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$methods = 3978889640
|   static $class$classLoader = dalvik.system.PathClassLoader@314949000 (0x12c5bd88)
|   static $class$dexTypeIndex = 342
|   static REQUEST_TIMER = 1000
|   static serialVersionUID = -8293310074117104639
|   static $class$numReferenceInstanceFields = 11
|   static $class$virtualMethodsOffset = 33
|   static $class$sFields = 3978889320
|   static REQUEST_CAMERA = 999
|   static $class$objectSizeAllocFastPath = 336
|   static $class$iFields = 3978889392
|   static $class$shadow$_monitor_ = -1915874320
|   static $class$componentType = null
|   static $class$extData = null
|   static $class$objectSize = 331
|   static $class$dexCache = java.lang.DexCache@317490416 (0x12ec84f0)
|   static $change = null
|   static $class$classSize = 2360
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$vtable = null
|   static $class$dexClassDefIndex = 125
|   static $classOverhead = byte[2216]@315875857 (0x12d3e211)
|   static $class$ifTable = java.lang.Object[40]@317513760 (0x12ece020)
|   cTimer = null
|   handler = org.havenapp.main.MonitorActivity$1@318649400 (0x12fe3438)
|   lastEventType = -1
|   mAnimShake = android.view.animation.AnimationSet@318649432 (0x12fe3458)
|   mBtnAccel = androidx.appcompat.widget.AppCompatImageView@318607352 (0x12fd8ff8)
|   mBtnCamera = androidx.appcompat.widget.AppCompatImageView@318606200 (0x12fd8b78)
|   mBtnMic = androidx.appcompat.widget.AppCompatImageView@318606776 (0x12fd8db8)
|   mFragmentCamera = org.havenapp.main.ui.CameraFragment@318564888 (0x12fcea18)
|   mIsInitializedLayout = true
|   mIsMonitoring = false
|   mOnTimerTicking = false
|   preferences = org.havenapp.main.PreferenceManager@318649576 (0x12fe34e8)
|   receiver = org.havenapp.main.MonitorActivity$2@318649600 (0x12fe3500)
|   txtStatus = androidx.appcompat.widget.AppCompatTextView@318615800 (0x12fdb0f8)
|   txtTimer = androidx.appcompat.widget.AppCompatTextView@318619136 (0x12fdbe00)
|   mDelegate = androidx.appcompat.app.AppCompatDelegateImpl@318582648 (0x12fd2f78)
|   mResources = null
|   mThemeId = 2131886103
|   mCreated = true
|   mFragments = androidx.fragment.app.FragmentController@318649624 (0x12fe3518)
|   mNextCandidateRequestIndex = 0
|   mPendingFragmentActivityResults = androidx.collection.SparseArrayCompat@318649640 (0x12fe3528)
|   mRequestedPermissionsFromFragment = false
|   mResumed = false
|   mStartedActivityFromFragment = false
|   mStartedIntentSenderFromFragment = false
|   mStopped = true
|   mLifecycleRegistry = androidx.lifecycle.LifecycleRegistry@318649664 (0x12fe3540)
|   mOnBackPressedCallbacks = java.util.concurrent.CopyOnWriteArrayList@318649696 (0x12fe3560)
|   mSavedStateRegistry = androidx.savedstate.bundle.BundleSavedStateRegistry@318649712 (0x12fe3570)
|   mViewModelStore = androidx.lifecycle.ViewModelStore@318649736 (0x12fe3588)
|   mExtraDataMap = androidx.collection.SimpleArrayMap@318649752 (0x12fe3598)
|   mActionBar = null
|   mActionModeTypeStarting = 0
|   mActivityInfo = android.content.pm.ActivityInfo@318595056 (0x12fd5ff0)
|   mActivityTransitionState = android.app.ActivityTransitionState@318649776 (0x12fe35b0)
|   mApplication = org.havenapp.main.HavenApp@314858936 (0x12c45db8)
|   mAutoFillIgnoreFirstResumePause = false
|   mAutoFillResetNeeded = false
|   mAutofillManager = null
|   mAutofillPopupWindow = null
|   mCalled = true
|   mCanEnterPictureInPicture = false
|   mChangeCanvasToTranslucent = false
|   mChangingConfigurations = false
|   mComponent = android.content.ComponentName@318595840 (0x12fd6300)
|   mConfigChangeFlags = 0
|   mCurrentConfig = android.content.res.Configuration@318649832 (0x12fe35e8)
|   mDecor = null
|   mDefaultKeyMode = 0
|   mDefaultKeySsb = null
|   mDestroyed = true
|   mDoReportFullyDrawn = false
|   mEmbeddedID = null
|   mEnableDefaultActionBarUp = false
|   mEnterTransitionListener = android.app.SharedElementCallback$1@1889691912 (0x70a26908)
|   mExitTransitionListener = android.app.SharedElementCallback$1@1889691912 (0x70a26908)
|   mFinished = true
|   mFragments = android.app.FragmentController@318649952 (0x12fe3660)
|   mHandler = android.os.Handler@318649968 (0x12fe3670)
|   mHasCurrentPermissionsRequest = false
|   mIdent = 42982185
|   mInstanceTracker = android.os.StrictMode$InstanceTracker@318650000 (0x12fe3690)
|   mInstrumentation = android.app.Instrumentation@317660328 (0x12ef1ca8)
|   mIntent = android.content.Intent@318595232 (0x12fd60a0)
|   mInterceptor = null
|   mLastAutofillId = 1073741823
|   mLastNonConfigurationInstances = null
|   mMainThread = android.app.ActivityThread@314835424 (0x12c401e0)
|   mManagedCursors = java.util.ArrayList@318650016 (0x12fe36a0)
|   mManagedDialogs = null
|   mMenuInflater = null
|   mParent = null
|   mReferrer = "org.havenapp.main"
|   mRestoredFromBundle = false
|   mResultCode = 0
|   mResultData = null
|   mResumed = false
|   mSearchEvent = null
|   mSearchManager = null
|   mStartedActivity = false
|   mStopped = true
|   mTaskDescription = android.app.ActivityManager$TaskDescription@318650040 (0x12fe36b8)
|   mTemporaryPause = false
|   mTitle = "Haven"
|   mTitleColor = 0
|   mTitleReady = true
|   mToken = android.os.BinderProxy@318576736 (0x12fd1860)
|   mTranslucentCallback = null
|   mUiThread = java.lang.Thread@2015227184 (0x781ded30)
|   mVisibleFromClient = true
|   mVisibleFromServer = false
|   mVoiceInteractor = null
|   mWindow = com.android.internal.policy.PhoneWindow@318575752 (0x12fd1488)
|   mWindowAdded = true
|   mWindowManager = android.view.WindowManagerImpl@318580064 (0x12fd2560)
|   mInflater = com.android.internal.policy.PhoneLayoutInflater@318579584 (0x12fd2380)
|   mOverrideConfiguration = null
|   mResources = android.content.res.MiuiResources@318567688 (0x12fcf508)
|   mTheme = android.content.res.Resources$Theme@318580152 (0x12fd25b8)
|   mThemeResource = 2131886103
|   mBase = android.app.ContextImpl@318580312 (0x12fd2658)
|   shadow$_klass_ = org.havenapp.main.MonitorActivity
|   shadow$_monitor_ = -2072724144
* Instance of org.havenapp.main.ui.CameraFragment
|   static $class$classFlags = 0
|   static $class$superClass = androidx.fragment.app.Fragment
|   static $class$primitiveType = 131072
|   static $class$clinitThreadId = 24051
|   static $class$numReferenceStaticFields = 1
|   static $class$status = -536870912
|   static $class$name = "org.havenapp.main.ui.CameraFragment"
|   static $class$accessFlags = 524305
|   static $class$copiedMethodsOffset = 14
|   static $class$shadow$_klass_ = java.lang.Class
|   static $class$methods = 3977091184
|   static $class$classLoader = dalvik.system.PathClassLoader@314949000 (0x12c5bd88)
|   static $class$dexTypeIndex = 407
|   static serialVersionUID = 1764227429559208470
|   static $class$numReferenceInstanceFields = 3
|   static $class$virtualMethodsOffset = 4
|   static $class$sFields = 3977091088
|   static $class$objectSizeAllocFastPath = 152
|   static $class$iFields = 3977091128
|   static $class$shadow$_monitor_ = 0
|   static $class$componentType = null
|   static $class$extData = null
|   static $class$objectSize = 148
|   static $class$dexCache = java.lang.DexCache@317457032 (0x12ec0288)
|   static $change = null
|   static $class$classSize = 856
|   static $class$referenceInstanceOffsets = -1073741824
|   static $class$vtable = null
|   static $class$dexClassDefIndex = 96
|   static $classOverhead = byte[720]@317463409 (0x12ec1b71)
|   static $class$ifTable = java.lang.Object[10]@317475584 (0x12ec4b00)
|   cameraViewHolder = org.havenapp.main.ui.CameraViewHolder@318563384 (0x12fce438)
|   newImage = androidx.appcompat.widget.AppCompatImageView@318565040 (0x12fceab0)
|   prefs = org.havenapp.main.PreferenceManager@318565616 (0x12fcecf0)
|   mAdded = false
|   mAnimationInfo = null
|   mArguments = null
|   mBackStackNesting = 0
|   mCalled = true
|   mChildFragmentManager = null
|   mContainer = null
|   mContainerId = 0
|   mDeferStart = false
|   mDetached = false
|   mFragmentId = 0
|   mFragmentManager = null
|   mFromLayout = false
|   mHasMenu = false
|   mHidden = false
|   mHiddenChanged = false
|   mHost = null
|   mInLayout = false
|   mInnerView = null
|   mIsCreated = false
|   mIsNewlyAdded = false
|   mLayoutInflater = null
|   mLifecycleRegistry = androidx.lifecycle.LifecycleRegistry@318565640 (0x12fced08)
|   mMenuVisible = true
|   mParentFragment = null
|   mPerformedCreateView = false
|   mPostponedAlpha = 0.0
|   mRemoving = false
|   mRestored = false
|   mRetainInstance = false
|   mRetainInstanceChangedWhileDetached = false
|   mSavedFragmentState = null
|   mSavedStateRegistry = androidx.savedstate.bundle.BundleSavedStateRegistry@318565672 (0x12fced28)
|   mSavedUserVisibleHint = null
|   mSavedViewState = null
|   mState = 0
|   mTag = null
|   mTarget = null
|   mTargetRequestCode = 0
|   mTargetWho = null
|   mUserVisibleHint = true
|   mView = null
|   mViewLifecycleOwner = null
|   mViewLifecycleOwnerLiveData = androidx.lifecycle.MutableLiveData@318565696 (0x12fced40)
|   mWho = "27699c87-60b7-4b89-a6ef-772f598ff594"
|   shadow$_klass_ = org.havenapp.main.ui.CameraFragment
|   shadow$_monitor_ = -1892616913
* 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)