Skip to content
This repository was archived by the owner on Mar 16, 2026. It is now read-only.
This repository was archived by the owner on Mar 16, 2026. It is now read-only.

LocationEngine leaks the listener #289

@LukasPaczos

Description

@LukasPaczos

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:
device-2018-11-12-153528

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:
device-2018-11-12-153809

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)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions