This repository was archived by the owner on Mar 16, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 47
This repository was archived by the owner on Mar 16, 2026. It is now read-only.
LocationEngine leaks the listener #289
Copy link
Copy link
Closed
Labels
Description
I'm testing the telemetry library v4.0.0 as a part of the mapbox/mapbox-gl-native#13233 and I'm running into leaks when requesting location updates - whenever the activity that requests and removes location updates is finished, it leaks context via the LocationEngine.
public class SimpleMapActivity extends AppCompatActivity {
private LocationEngine locationEngine;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_simple);
locationEngine = LocationEngineProvider.getBestLocationEngine(this, false);
}
private static LocationEngineRequest locationRequest =
new LocationEngineRequest.Builder(1000)
.setFastestInterval(1000)
.setPriority(LocationEngineRequest.PRIORITY_HIGH_ACCURACY)
.build();
@NonNull
private LocationEngineCallback<LocationEngineResult> locationEngineListener =
new LocationEngineCallback<LocationEngineResult>() {
@Override
public void onSuccess(LocationEngineResult result) {
Timber.d("LOCATION: %s", result.getLastLocation());
}
@Override
public void onFailure(@NonNull Exception exception) {
// no impl
}
};
@SuppressLint("MissingPermission")
@Override
protected void onStart() {
super.onStart();
locationEngine.requestLocationUpdates(locationRequest, locationEngineListener, Looper.getMainLooper());
}
@Override
protected void onStop() {
super.onStop();
locationEngine.removeLocationUpdates(locationEngineListener);
}
}
When using the play-services-location I'm running into:

D/LeakCanary: In com.mapbox.mapboxsdk.testapp:6.0.0:13.
D/LeakCanary: * com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity has leaked:
D/LeakCanary: * zzat.!(zzda)!
D/LeakCanary: * ↳ ListenerHolder.!(zajk)!
D/LeakCanary: * ↳ ListenerHolder$ListenerKey.!(zajj)!
D/LeakCanary: * ↳ GoogleLocationEngineImpl$1.!(val$callback)! (anonymous subclass of com.google.android.gms.location.LocationCallback)
D/LeakCanary: * ↳ SimpleMapActivity$1.!(this$0)! (anonymous implementation of com.mapbox.android.core.location.LocationEngineCallback)
D/LeakCanary: * ↳ SimpleMapActivity
D/LeakCanary: * Reference Key: 0558c52e-e87a-4608-9abe-0cee08c92291
D/LeakCanary: * Device: Sony Sony D5503 D5503
D/LeakCanary: * Android Version: 5.1.1 API: 22 LeakCanary: 1.6.1 26145bf
D/LeakCanary: * Durations: watch=5035ms, gc=192ms, heap dump=1901ms, analysis=21522ms
D/LeakCanary: * Details:
D/LeakCanary: * Instance of com.google.android.gms.internal.location.zzat
D/LeakCanary: | zzda = com.google.android.gms.common.api.internal.ListenerHolder@316357280 (0x12db3aa0)
D/LeakCanary: | mDescriptor = "com.google.android.gms.location.ILocationCallback"
D/LeakCanary: | mObject = -1361592872
D/LeakCanary: | mOwner = com.google.android.gms.internal.location.zzat@315090240 (0x12c7e540)
D/LeakCanary: * Instance of com.google.android.gms.common.api.internal.ListenerHolder
D/LeakCanary: | zaji = com.google.android.gms.common.api.internal.ListenerHolder$zaa@316357312 (0x12db3ac0)
D/LeakCanary: | zajj = null
D/LeakCanary: | zajk = com.google.android.gms.common.api.internal.ListenerHolder$ListenerKey@315063840 (0x12c77e20)
D/LeakCanary: * Instance of com.google.android.gms.common.api.internal.ListenerHolder$ListenerKey
D/LeakCanary: | zajj = com.mapbox.android.core.location.GoogleLocationEngineImpl$1@315063728 (0x12c77db0)
D/LeakCanary: | zajm = "LocationCallback"
D/LeakCanary: * Instance of com.mapbox.android.core.location.GoogleLocationEngineImpl$1
D/LeakCanary: | this$0 = com.mapbox.android.core.location.GoogleLocationEngineImpl@315063568 (0x12c77d10)
D/LeakCanary: | val$callback = com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity$1@315061632 (0x12c77580)
D/LeakCanary: * Instance of com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity$1
D/LeakCanary: | static $staticOverhead = byte[8]@318098321 (0x12f5cb91)
D/LeakCanary: | static $jacocoData = boolean[4]@315061664 (0x12c775a0)
D/LeakCanary: | this$0 = com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity@317670464 (0x12ef4440)
D/LeakCanary: * Instance of com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity
D/LeakCanary: | static $staticOverhead = byte[16]@316719105 (0x12e0c001)
D/LeakCanary: | static $jacocoData = boolean[13]@316079328 (0x12d6fce0)
D/LeakCanary: | static locationRequest = com.mapbox.android.core.location.LocationEngineRequest@316567312 (0x12de6f10)
D/LeakCanary: | locationEngine = com.mapbox.android.core.location.ForegroundLocationEngine@315063552 (0x12c77d00)
D/LeakCanary: | locationEngineListener = com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity$1@315061632 (0x12c77580)
D/LeakCanary: | mDelegate = android.support.v7.app.AppCompatDelegateImplV14@316683264 (0x12e03400)
D/LeakCanary: | mResources = null
D/LeakCanary: | mThemeId = 2131755015
D/LeakCanary: | mCreated = true
D/LeakCanary: | mFragments = android.support.v4.app.FragmentController@315061584 (0x12c77550)
D/LeakCanary: | mHandler = android.support.v4.app.FragmentActivity$1@316088640 (0x12d72140)
D/LeakCanary: | mLoaderManager = null
D/LeakCanary: | mNextCandidateRequestIndex = 0
D/LeakCanary: | mPendingFragmentActivityResults = android.support.v4.util.SparseArrayCompat@316126464 (0x12d7b500)
D/LeakCanary: | mReallyStopped = true
D/LeakCanary: | mRequestedPermissionsFromFragment = false
D/LeakCanary: | mResumed = false
D/LeakCanary: | mRetaining = false
D/LeakCanary: | mStopped = true
D/LeakCanary: | mViewModelStore = null
D/LeakCanary: | mStartedActivityFromFragment = false
D/LeakCanary: | mStartedIntentSenderFromFragment = false
D/LeakCanary: | mExtraDataMap = android.support.v4.util.SimpleArrayMap@316080000 (0x12d6ff80)
D/LeakCanary: | mLifecycleRegistry = android.arch.lifecycle.LifecycleRegistry@316567408 (0x12de6f70)
D/LeakCanary: | mActionBar = null
D/LeakCanary: | mActivityInfo = android.content.pm.ActivityInfo@316157824 (0x12d82f80)
D/LeakCanary: | mActivityTransitionState = android.app.ActivityTransitionState@315135360 (0x12c89580)
D/LeakCanary: | mAllLoaderManagers = android.util.ArrayMap@316355968 (0x12db3580)
D/LeakCanary: | mApplication = com.mapbox.mapboxsdk.testapp.MapboxApplication@315209664 (0x12c9b7c0)
D/LeakCanary: | mCalled = true
D/LeakCanary: | mChangeCanvasToTranslucent = false
D/LeakCanary: | mChangingConfigurations = false
D/LeakCanary: | mCheckedForLoaderManager = true
D/LeakCanary: | mComponent = android.content.ComponentName@316596368 (0x12dee090)
D/LeakCanary: | mConfigChangeFlags = 0
D/LeakCanary: | mContainer = android.app.Activity$1@315061504 (0x12c77500)
D/LeakCanary: | mCurrentConfig = android.content.res.Configuration@316201552 (0x12d8da50)
D/LeakCanary: | mDecor = null
D/LeakCanary: | mDefaultKeyMode = 0
D/LeakCanary: | mDefaultKeySsb = null
D/LeakCanary: | mDestroyed = true
D/LeakCanary: | mDoReportFullyDrawn = false
D/LeakCanary: | mEmbeddedID = null
D/LeakCanary: | mEnableDefaultActionBarUp = false
D/LeakCanary: | mEnterTransitionListener = android.app.SharedElementCallback$1@1888345920 (0x708ddf40)
D/LeakCanary: | mExitTransitionListener = android.app.SharedElementCallback$1@1888345920 (0x708ddf40)
D/LeakCanary: | mFinished = true
D/LeakCanary: | mFragments = android.app.FragmentManagerImpl@316200880 (0x12d8d7b0)
D/LeakCanary: | mHandler = android.os.Handler@316079904 (0x12d6ff20)
D/LeakCanary: | mIdent = 469578706
D/LeakCanary: | mInstanceTracker = android.os.StrictMode$InstanceTracker@315061520 (0x12c77510)
D/LeakCanary: | mInstrumentation = android.app.Instrumentation@315199824 (0x12c99150)
D/LeakCanary: | mIntent = android.content.Intent@315117632 (0x12c85040)
D/LeakCanary: | mLastNonConfigurationInstances = null
D/LeakCanary: | mLoaderManager = null
D/LeakCanary: | mLoadersStarted = false
D/LeakCanary: | mMainThread = android.app.ActivityThread@314949888 (0x12c5c100)
D/LeakCanary: | mManagedCursors = java.util.ArrayList@316079712 (0x12d6fe60)
D/LeakCanary: | mManagedDialogs = null
D/LeakCanary: | mMenuInflater = null
D/LeakCanary: | mParent = null
D/LeakCanary: | mReferrer = "com.mapbox.mapboxsdk.testapp"
D/LeakCanary: | mResultCode = 0
D/LeakCanary: | mResultData = null
D/LeakCanary: | mResumed = false
D/LeakCanary: | mSearchManager = null
D/LeakCanary: | mStartedActivity = false
D/LeakCanary: | mStopped = true
D/LeakCanary: | mTemporaryPause = false
D/LeakCanary: | mTitle = "Simple Map"
D/LeakCanary: | mTitleColor = 0
D/LeakCanary: | mTitleReady = true
D/LeakCanary: | mToken = android.os.BinderProxy@315835264 (0x12d34380)
D/LeakCanary: | mTranslucentCallback = null
D/LeakCanary: | mUiThread = java.lang.Thread@1950542256 (0x7442e9b0)
D/LeakCanary: | mVisibleBehind = false
D/LeakCanary: | mVisibleFromClient = true
D/LeakCanary: | mVisibleFromServer = true
D/LeakCanary: | mVoiceInteractor = null
D/LeakCanary: | mWindow = com.android.internal.policy.impl.PhoneWindow@317155328 (0x12e76800)
D/LeakCanary: | mWindowAdded = true
D/LeakCanary: | mWindowManager = android.view.WindowManagerImpl@316091520 (0x12d72c80)
D/LeakCanary: | mInflater = com.android.internal.policy.impl.PhoneLayoutInflater@316873600 (0x12e31b80)
D/LeakCanary: | mOverrideConfiguration = null
D/LeakCanary: | mResources = android.content.res.Resources@314750224 (0x12c2b510)
D/LeakCanary: | mTheme = android.content.res.Resources$Theme@316091616 (0x12d72ce0)
D/LeakCanary: | mThemeResource = 2131755015
D/LeakCanary: | mBase = android.app.ContextImpl@314732160 (0x12c26e80)
D/LeakCanary: * Excluded Refs:
D/LeakCanary: | Field: android.os.Message.obj
D/LeakCanary: | Field: android.os.Message.next
D/LeakCanary: | Field: android.os.Message.target
D/LeakCanary: | Field: android.view.inputmethod.InputMethodManager.mNextServedView
D/LeakCanary: | Field: android.view.inputmethod.InputMethodManager.mServedView
D/LeakCanary: | Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
D/LeakCanary: | Field: android.view.inputmethod.InputMethodManager.mCurRootView
D/LeakCanary: | Field: android.animation.LayoutTransition$1.val$parent
D/LeakCanary: | Field: android.view.textservice.SpellCheckerSession$1.this$0
D/LeakCanary: | Field: android.widget.SpellChecker$1.this$0
D/LeakCanary: | Field: android.support.v7.internal.widget.ActivityChooserModel.mActivityChoserModelPolicy
D/LeakCanary: | Field: android.widget.ActivityChooserModel.mActivityChoserModelPolicy
D/LeakCanary: | Field: android.accounts.AccountManager$AmsTask$Response.this$1
D/LeakCanary: | Field: android.media.MediaScannerConnection.mContext
D/LeakCanary: | Field: android.os.UserManager.mContext
D/LeakCanary: | Field: android.media.AudioManager$1.this$0
D/LeakCanary: | Field: android.widget.Editor$Blink.this$0
D/LeakCanary: | Field: android.net.ConnectivityManager.sInstance
D/LeakCanary: | Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
D/LeakCanary: | Static field: android.text.TextLine.sCached
D/LeakCanary: | Thread:FinalizerWatchdogDaemon (always)
D/LeakCanary: | Thread:main (always)
D/LeakCanary: | Thread:LeakCanary-Heap-Dump (always)
D/LeakCanary: | Class:java.lang.ref.WeakReference (always)
D/LeakCanary: | Class:java.lang.ref.SoftReference (always)
D/LeakCanary: | Class:java.lang.ref.PhantomReference (always)
D/LeakCanary: | Class:java.lang.ref.Finalizer (always)
D/LeakCanary: | Class:java.lang.ref.FinalizerReference (always)
Without play-services-location:

D/LeakCanary: In com.mapbox.mapboxsdk.testapp:6.0.0:13.
D/LeakCanary: * com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity has leaked:
D/LeakCanary: * LocationManager$ListenerTransport.!(mListener)!
D/LeakCanary: * ↳ MapboxFusedLocationEngineImpl$1.!(val$callback)! (anonymous implementation of android.location.LocationListener)
D/LeakCanary: * ↳ SimpleMapActivity$1.!(this$0)! (anonymous implementation of com.mapbox.android.core.location.LocationEngineCallback)
D/LeakCanary: * ↳ SimpleMapActivity
D/LeakCanary: * Reference Key: 5fb3c0f1-b155-4a6a-ae8f-6b20229513b3
D/LeakCanary: * Device: Sony Sony D5503 D5503
D/LeakCanary: * Android Version: 5.1.1 API: 22 LeakCanary: 1.6.1 26145bf
D/LeakCanary: * Durations: watch=5033ms, gc=185ms, heap dump=1785ms, analysis=13843ms
D/LeakCanary: * Details:
D/LeakCanary: * Instance of android.location.LocationManager$ListenerTransport
D/LeakCanary: | static TYPE_STATUS_CHANGED = 2
D/LeakCanary: | static TYPE_PROVIDER_DISABLED = 4
D/LeakCanary: | static TYPE_PROVIDER_ENABLED = 3
D/LeakCanary: | static TYPE_LOCATION_CHANGED = 1
D/LeakCanary: | static $staticOverhead = byte[32]@851686769 (0x32c3b571)
D/LeakCanary: | mListener = com.mapbox.android.core.location.MapboxFusedLocationEngineImpl$1@855491456 (0x32fdc380)
D/LeakCanary: | mListenerHandler = android.location.LocationManager$ListenerTransport$2@855486224 (0x32fdaf10)
D/LeakCanary: | this$0 = android.location.LocationManager@852498560 (0x32d01880)
D/LeakCanary: | mDescriptor = "android.location.ILocationListener"
D/LeakCanary: | mObject = -1600717064
D/LeakCanary: | mOwner = android.location.LocationManager$ListenerTransport@855486128 (0x32fdaeb0)
D/LeakCanary: * Instance of com.mapbox.android.core.location.MapboxFusedLocationEngineImpl$1
D/LeakCanary: | this$0 = com.mapbox.android.core.location.MapboxFusedLocationEngineImpl@855500288 (0x32fde600)
D/LeakCanary: | val$callback = com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity$1@854469488 (0x32ee2b70)
D/LeakCanary: * Instance of com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity$1
D/LeakCanary: | static $staticOverhead = byte[8]@851600193 (0x32c26341)
D/LeakCanary: | static $jacocoData = boolean[4]@852988752 (0x32d79350)
D/LeakCanary: | this$0 = com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity@852391680 (0x32ce7700)
D/LeakCanary: * Instance of com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity
D/LeakCanary: | static $staticOverhead = byte[16]@852041729 (0x32c92001)
D/LeakCanary: | static $jacocoData = boolean[13]@852994016 (0x32d7a7e0)
D/LeakCanary: | static locationRequest = com.mapbox.android.core.location.LocationEngineRequest@853477600 (0x32df08e0)
D/LeakCanary: | locationEngine = com.mapbox.android.core.location.ForegroundLocationEngine@855491408 (0x32fdc350)
D/LeakCanary: | locationEngineListener = com.mapbox.mapboxsdk.testapp.activity.maplayout.SimpleMapActivity$1@854469488 (0x32ee2b70)
D/LeakCanary: | mDelegate = android.support.v7.app.AppCompatDelegateImplV14@851465664 (0x32c055c0)
D/LeakCanary: | mResources = null
D/LeakCanary: | mThemeId = 2131755015
D/LeakCanary: | mCreated = true
D/LeakCanary: | mFragments = android.support.v4.app.FragmentController@854469472 (0x32ee2b60)
D/LeakCanary: | mHandler = android.support.v4.app.FragmentActivity$1@855406656 (0x32fc7840)
D/LeakCanary: | mLoaderManager = null
D/LeakCanary: | mNextCandidateRequestIndex = 0
D/LeakCanary: | mPendingFragmentActivityResults = android.support.v4.util.SparseArrayCompat@855430336 (0x32fcd4c0)
D/LeakCanary: | mReallyStopped = true
D/LeakCanary: | mRequestedPermissionsFromFragment = false
D/LeakCanary: | mResumed = false
D/LeakCanary: | mRetaining = false
D/LeakCanary: | mStopped = true
D/LeakCanary: | mViewModelStore = null
D/LeakCanary: | mStartedActivityFromFragment = false
D/LeakCanary: | mStartedIntentSenderFromFragment = false
D/LeakCanary: | mExtraDataMap = android.support.v4.util.SimpleArrayMap@855406528 (0x32fc77c0)
D/LeakCanary: | mLifecycleRegistry = android.arch.lifecycle.LifecycleRegistry@854515184 (0x32eeddf0)
D/LeakCanary: | mActionBar = null
D/LeakCanary: | mActivityInfo = android.content.pm.ActivityInfo@855339264 (0x32fb7100)
D/LeakCanary: | mActivityTransitionState = android.app.ActivityTransitionState@855305984 (0x32faef00)
D/LeakCanary: | mAllLoaderManagers = android.util.ArrayMap@855500384 (0x32fde660)
D/LeakCanary: | mApplication = com.mapbox.mapboxsdk.testapp.MapboxApplication@852554272 (0x32d0f220)
D/LeakCanary: | mCalled = true
D/LeakCanary: | mChangeCanvasToTranslucent = false
D/LeakCanary: | mChangingConfigurations = false
D/LeakCanary: | mCheckedForLoaderManager = true
D/LeakCanary: | mComponent = android.content.ComponentName@855306848 (0x32faf260)
D/LeakCanary: | mConfigChangeFlags = 0
D/LeakCanary: | mContainer = android.app.Activity$1@854469392 (0x32ee2b10)
D/LeakCanary: | mCurrentConfig = android.content.res.Configuration@854490688 (0x32ee7e40)
D/LeakCanary: | mDecor = null
D/LeakCanary: | mDefaultKeyMode = 0
D/LeakCanary: | mDefaultKeySsb = null
D/LeakCanary: | mDestroyed = true
D/LeakCanary: | mDoReportFullyDrawn = false
D/LeakCanary: | mEmbeddedID = null
D/LeakCanary: | mEnableDefaultActionBarUp = false
D/LeakCanary: | mEnterTransitionListener = android.app.SharedElementCallback$1@1888345920 (0x708ddf40)
D/LeakCanary: | mExitTransitionListener = android.app.SharedElementCallback$1@1888345920 (0x708ddf40)
D/LeakCanary: | mFinished = true
D/LeakCanary: | mFragments = android.app.FragmentManagerImpl@854490464 (0x32ee7d60)
D/LeakCanary: | mHandler = android.os.Handler@855406496 (0x32fc77a0)
D/LeakCanary: | mIdent = 408542650
D/LeakCanary: | mInstanceTracker = android.os.StrictMode$InstanceTracker@854469408 (0x32ee2b20)
D/LeakCanary: | mInstrumentation = android.app.Instrumentation@852558240 (0x32d101a0)
D/LeakCanary: | mIntent = android.content.Intent@854081728 (0x32e840c0)
D/LeakCanary: | mLastNonConfigurationInstances = null
D/LeakCanary: | mLoaderManager = null
D/LeakCanary: | mLoadersStarted = false
D/LeakCanary: | mMainThread = android.app.ActivityThread@851456256 (0x32c03100)
D/LeakCanary: | mManagedCursors = java.util.ArrayList@855406432 (0x32fc7760)
D/LeakCanary: | mManagedDialogs = null
D/LeakCanary: | mMenuInflater = null
D/LeakCanary: | mParent = null
D/LeakCanary: | mReferrer = "com.mapbox.mapboxsdk.testapp"
D/LeakCanary: | mResultCode = 0
D/LeakCanary: | mResultData = null
D/LeakCanary: | mResumed = false
D/LeakCanary: | mSearchManager = null
D/LeakCanary: | mStartedActivity = false
D/LeakCanary: | mStopped = true
D/LeakCanary: | mTemporaryPause = false
D/LeakCanary: | mTitle = "Simple Map"
D/LeakCanary: | mTitleColor = 0
D/LeakCanary: | mTitleReady = true
D/LeakCanary: | mToken = android.os.BinderProxy@854085824 (0x32e850c0)
D/LeakCanary: | mTranslucentCallback = null
D/LeakCanary: | mUiThread = java.lang.Thread@1950542256 (0x7442e9b0)
D/LeakCanary: | mVisibleBehind = false
D/LeakCanary: | mVisibleFromClient = true
D/LeakCanary: | mVisibleFromServer = true
D/LeakCanary: | mVoiceInteractor = null
D/LeakCanary: | mWindow = com.android.internal.policy.impl.PhoneWindow@852507008 (0x32d03980)
D/LeakCanary: | mWindowAdded = true
D/LeakCanary: | mWindowManager = android.view.WindowManagerImpl@855407168 (0x32fc7a40)
D/LeakCanary: | mInflater = com.android.internal.policy.impl.PhoneLayoutInflater@854515472 (0x32eedf10)
D/LeakCanary: | mOverrideConfiguration = null
D/LeakCanary: | mResources = android.content.res.Resources@852266448 (0x32cc8dd0)
D/LeakCanary: | mTheme = android.content.res.Resources$Theme@855407200 (0x32fc7a60)
D/LeakCanary: | mThemeResource = 2131755015
D/LeakCanary: | mBase = android.app.ContextImpl@855381760 (0x32fc1700)
D/LeakCanary: * Excluded Refs:
D/LeakCanary: | Field: android.os.Message.obj
D/LeakCanary: | Field: android.os.Message.next
D/LeakCanary: | Field: android.os.Message.target
D/LeakCanary: | Field: android.view.inputmethod.InputMethodManager.mNextServedView
D/LeakCanary: | Field: android.view.inputmethod.InputMethodManager.mServedView
D/LeakCanary: | Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
D/LeakCanary: | Field: android.view.inputmethod.InputMethodManager.mCurRootView
D/LeakCanary: | Field: android.animation.LayoutTransition$1.val$parent
D/LeakCanary: | Field: android.view.textservice.SpellCheckerSession$1.this$0
D/LeakCanary: | Field: android.widget.SpellChecker$1.this$0
D/LeakCanary: | Field: android.support.v7.internal.widget.ActivityChooserModel.mActivityChoserModelPolicy
D/LeakCanary: | Field: android.widget.ActivityChooserModel.mActivityChoserModelPolicy
D/LeakCanary: | Field: android.accounts.AccountManager$AmsTask$Response.this$1
D/LeakCanary: | Field: android.media.MediaScannerConnection.mContext
D/LeakCanary: | Field: android.os.UserManager.mContext
D/LeakCanary: | Field: android.media.AudioManager$1.this$0
D/LeakCanary: | Field: android.widget.Editor$Blink.this$0
D/LeakCanary: | Field: android.net.ConnectivityManager.sInstance
D/LeakCanary: | Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
D/LeakCanary: | Static field: android.text.TextLine.sCached
D/LeakCanary: | Thread:FinalizerWatchdogDaemon (always)
D/LeakCanary: | Thread:main (always)
D/LeakCanary: | Thread:LeakCanary-Heap-Dump (always)
D/LeakCanary: | Class:java.lang.ref.WeakReference (always)
D/LeakCanary: | Class:java.lang.ref.SoftReference (always)
D/LeakCanary: | Class:java.lang.ref.PhantomReference (always)
D/LeakCanary: | Class:java.lang.ref.Finalizer (always)
D/LeakCanary: | Class:java.lang.ref.FinalizerReference (always)
Reactions are currently unavailable