在TextView的Andr​​oid的内存泄漏 - LeakCanary(泄漏可以忽略不计) [英] Android memory leak on textview - LeakCanary (Leak can be ignored)

查看:1256
本文介绍了在TextView的Andr​​oid的内存泄漏 - LeakCanary(泄漏可以忽略不计)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不断有以下内存泄漏所显示LeakCanary,当我从我的开机画面到mainactivity。据我所知,这是由于故障在Android操作系统本身的预期泄漏,但有一个方法可以让我避免这种情况(通过设置一定的TextView的具体地方?)

 八月5日至22日:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*泄漏可以忽略不计。
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:* com.gmspartnersltd.earthmiles.views.ActivitySignUp_渗漏:
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:* GC根静态android.text.TextLine.sCached
5月22日08:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*引用数组android.text.TextLine [] [1]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*引用android.text.TextLine.mCharacterStyleSpanSet
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*引用android.text.SpanSet.spans
5月22日08:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*引用数组android.text.style.CharacterStyle [] [1]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*引用com.gmspartnersltd.earthmiles.views.ActivitySignUp $ 2,本$ 0(匿名类扩展android.text.style.ClickableSpan)
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*泄漏com.gmspartnersltd.earthmiles.views.ActivitySignUp_实例
8月五日至22日:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:[8月五日至22日:54:52.160 13969:18091 D / LeakCanary]
    *参考键:bb8124a9-2829-4ff3-8ded-13cf35f80f54
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*设备:Genymotion通用谷歌Nexus 5  -  5.0.0  -  API 21  -  1080x1920 vbox86p
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:* Android版本:5.0 API:21 LeakCanary:1.3.1
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*持续时间:表= 10898ms,GC = 137ms,堆转储= 5529ms,分析= 9193ms
8月五日至22日:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:[8月五日至22日:54:52.160 13969:18091 D / LeakCanary]
    *详细信息:
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*类android.text.TextLine
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|静态$ staticOverhead =字节[] [ID = 0x70622169;长度= 24;大小= 40]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|静态sCached = android.text.TextLine [] [ID = 0x70775010;长度= 3]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|静态调试=假
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|静态TAB_INCREMENT = 20
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:* android.text.TextLine的数组[]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| [0] = android.text.TextLine [ID = 0x1309a2e0]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| [1] = android.text.TextLine [ID = 0x12eed650]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| [2] =空
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:* android.text.TextLine的实例
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|静态$ staticOverhead =字节[] [ID = 0x70622169;长度= 24;大小= 40]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|静态sCached = android.text.TextLine [] [ID = 0x70775010;长度= 3]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|静态调试=假
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|静态TAB_INCREMENT = 20
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mCharacterStyleSpanSet = android.text.SpanSet [ID = 0x12e32d80]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mChars = NULL
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mDirections = NULL
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mMetricAffectingSpanSpanSet = android.text.SpanSet [ID = 0x12e32d60]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mPaint = NULL
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mReplacementSpanSpanSet = android.text.SpanSet [ID = 0x12e32da0]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mSpanned = android.text.SpannedString [ID = 0x132dabe0]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mTabs = NULL
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| MTEXT = NULL
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mWorkPaint = android.text.TextPaint [ID = 0x1300f5c0]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mCharsValid = FALSE
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| MDIR = 1
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mHasTabs = FALSE
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| MLEN = 1
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mStart = 0
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:* android.text.SpanSet的实例
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| classType所=的java.lang.Class [ID = 0x703bb448;名称= android.text.style.CharacterStyle]
八月5号至22号:54:52.160 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| spanEnds = INT [] [ID = 0x1309fd60;长度= 2;大小= 24]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| spanFlags = INT [] [ID = 0x1309fda0;长度= 2;大小= 24]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| spanStarts = INT [] [ID = 0x1309fd20;长度= 2;大小= 24]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|跨度= android.text.style.CharacterStyle [] [ID = 0x1309fce0;长度= 2]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| numberOfSpans = 1
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:* android.text.style.CharacterStyle的数组[]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| [0] =空
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| [1] = com.gmspartnersltd.earthmiles.views.ActivitySignUp $ 2 [ID = 0x130952c0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:*的实例com.gmspartnersltd.earthmiles.views.ActivitySignUp $ 2
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|此$ 0 = com.gmspartnersltd.earthmiles.views.ActivitySignUp_ [ID = 0x13361800]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:* com.gmspartnersltd.earthmiles.views.ActivitySignUp_的实例
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| onViewChangedNotifier_ = org.androidannotations.api.view.OnViewChangedNotifier [ID = 0x13052dc0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|生日= NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| buttonNext = android.support.v7.widget.AppCompatButton [ID = 0x13459c00]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| confirmPassword = java.lang.String中[ID = 0x132f01a0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| editTextConformPassword = android.support.v7.widget.AppCompatEditText [ID = 0x13458400]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| editTextEmail = android.support.v7.widget.AppCompatEditText [ID = 0x1339b000]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| editTextFirstName = android.support.v7.widget.AppCompatEditText [ID = 0x13396c00]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| editTextLastName = android.support.v7.widget.AppCompatEditText [ID = 0x13398800]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| editTextPassword = android.support.v7.widget.AppCompatEditText [ID = 0x13456c00]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|电子邮件= java.lang.String中[ID = 0x132f0040]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| Facebook的= com.facebook.android.Facebook [ID = 0x1307ee00]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| fbUserId = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|的firstName = java.lang.String中[ID = 0x132f0080]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|性别= NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|的lastName = java.lang.String中[ID = 0x132f00e0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|位置= NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mAsyncRunner = com.facebook.android.AsyncFacebookRunner [ID = 0x130952a0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|密码= java.lang.String中[ID = 0x132f0140]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| termsOfUse = android.support.v7.widget.AppCompatTextView [ID = 0x1345a000]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:|文= android.text.SpannableString [ID = 0x1310eaa0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| fromFacebook = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| etHelpMessage = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mProgressHUD = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| positiveAction = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| showBusyAnimationRequesterCount = 0
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mDelegate = android.support.v7.app.AppCompatDelegateImplV11 [​​ID = 0x12ecfd80]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mAllLoaderManagers = android.support.v4.util.SimpleArrayMap [ID = 0x131d80a0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mContainer = android.support.v4.app.FragmentActivity $ 2 [ID = 0x13052db0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mFragments = android.support.v4.app.FragmentManagerImpl [ID = 0x12f7cf60]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mHandler = android.support.v4.app.FragmentActivity $ 1 [ID = 0x1310ea80]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mLoaderManager = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mCheckedForLoaderManager =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mCreated =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mLoadersStarted = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mOptionsMenuInvalidated = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mReallyStopped =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mResumed = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mRetaining = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mStopped =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mActionBar = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mActivityInfo = android.content.pm.ActivityInfo [ID = 0x12db0180]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mActivityTransitionState = android.app.ActivityTransitionState [ID = 0x1304b600]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mAllLoaderManagers = android.util.ArrayMap [ID = 0x131c9d00]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mApplication = com.gmspartnersltd.earthmiles.globalstate.App [ID = 0x12c6e8c0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mComponent = android.content.ComponentName [ID = 0x12f64150]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mContainer = android.app.Activity $ 1 [ID = 0x13052d70]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mCurrentConfig = android.content.res.Configuration [ID = 0x12f97520]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mDecor = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mDefaultKeySsb = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mEmbeddedID = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mEnterTransitionListener = android.app.SharedElementCallback $ 1 [ID = 0x70765ba8]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mExitTransitionListener = android.app.SharedElementCallback $ 1 [ID = 0x70765ba8]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mFragments = android.app.FragmentManagerImpl [ID = 0x12f7cef0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mHandler = android.os.Handler [ID = 0x1310ea60]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mInstanceTracker = android.os.StrictMode $ InstanceTracker [ID = 0x13052d90]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mInstrumentation = android.app.Instrumentation [ID = 0x12c33f70]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mIntent = android.content.Intent [ID = 0x12f3b300]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mLastNonConfigurationInstances = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mLoaderManager = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mMainThread = android.app.ActivityThread [ID = 0x12c2b100]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mManagedCursors =的java.util.ArrayList [ID = 0x1310ea40]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mManagedDialogs = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mMenuInflater = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mParent = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mResultData = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mSearchManager = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mTitle = java.lang.String中[ID = 0x12e6d7e0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mToken = android.os.BinderProxy [ID = 0x12fe86a0]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mTranslucentCallback = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mUiThread = java.lang.Thread中的[ID = 0x73b43540]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mVoiceInteractor = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mWindow = com.android.internal.policy.impl.PhoneWindow [ID = 0x12e5d580]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mWindowManager = android.view.WindowManagerImpl [ID = 0x1310ed20]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mCalled =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mChangeCanvasToTranslucent = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mChangingConfigurations = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mCheckedForLoaderManager =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mConfigChangeFlags = 0
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mDefaultKeyMode = 0
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mDestroyed =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mDoReportFullyDrawn = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mEnableDefaultActionBarUp = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mFinished =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mIdent = 24993652
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mLoadersStarted = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mResult code = 0
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mResumed = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mStartedActivity = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mStopped =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mTemporaryPause = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mTitleColor = 0
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mTitleReady =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mVisibleBehind = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mVisibleFromClient =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mVisibleFromServer = FALSE
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mWindowAdded =真
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mInflater = com.android.internal.policy.impl.PhoneLayoutInflater [ID = 0x13152580]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mOverrideConfiguration = NULL
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mResources = android.content.res.Resources [ID = 0x12c33f20]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mTheme = android.content.res.Resources $主题[ID = 0x1310ed40]
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| mThemeResource = 2131689670
八月5号至22号:54:52.161 13969-18091 / com.gmspartnersltd.earthmiles.debug D / LeakCanary:| MBASE = android.app.ContextImpl [ID = 0x12c81100]
 

解决方案

从<一个href="https://github.com/square/leakcanary/blob/master/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidExcludedRefs.java"><$c$c>AndroidExcludedRefs.java:

  // TextLine.sCached是3 TextLine实例池。 TextLine.recycle()已至少两个
  //创建内存泄漏通过不正确清除回收TextLine实例的错误。
  //第一个固定在Android的5.1.0_r1:
  // https://github.com/android/platform_frameworks_bas​​e/commit
  // / 893d6fe48d37f71e683f722457bea646994a10bf

  //第二个是固定的,尚未发布:
  // https://github.com/android/platform_frameworks_bas​​e/commit
  // / b3a9bc038d3a218b1dbdf7b5668e3d6c12be5ee4

  //哈克:要解决这个问题,你可以访问TextLine.sCached疏通水池飘飞
  //(例如,在活动的破坏)。
 

步骤1:访问 TextLine.sCached

 公共静态类utils的{
    私有静态最后场TEXT_LINE_CACHED;

    静态{
        现场textLineCached = NULL;
        尝试 {
            textLineCached =的Class.forName(android.text.TextLine)getDeclaredField(sCached);
            textLineCached.setAccessible(真正的);
        }赶上(例外前){
            ex.printStackTrace();
        }
        TEXT_LINE_CACHED = textLineCached;
    }

    公共静态无效clearTextLineCache(){
        //如果未找到任何原因的领域刚刚返回。
        如果(TEXT_LINE_CACHED == NULL)回报;

        对象缓存= NULL;
        尝试 {
            //获取引用的TextLine sCached阵列。
            缓存= TEXT_LINE_CACHED.get(空);
        }赶上(例外前){
            //
        }
        如果(缓存!= NULL){
            //清除数组。
            的for(int i = 0,大小= Array.getLength(缓存); I&LT;大小;我++){
                Array.set(缓存,I,NULL);
            }
        }
    }

    私人的Utils(){}
}
 

步骤2:清除池

呼叫 Utils.clearTextLineCache()在需要的时候。

I keep having the following memory leak as displayed by LeakCanary, when I go from my splash screen to the mainactivity. I understand that this is an expected leak due to fault in the Android OS itself, but is there a way I can avoid this (by setting specifics of some TextView somewhere?)

05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * LEAK CAN BE IGNORED.
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * com.gmspartnersltd.earthmiles.views.ActivitySignUp_ has leaked:
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * GC ROOT static android.text.TextLine.sCached
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * references array android.text.TextLine[].[1]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * references android.text.TextLine.mCharacterStyleSpanSet
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * references android.text.SpanSet.spans
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * references array android.text.style.CharacterStyle[].[1]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * references com.gmspartnersltd.earthmiles.views.ActivitySignUp$2.this$0 (anonymous class extends android.text.style.ClickableSpan)
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * leaks com.gmspartnersltd.earthmiles.views.ActivitySignUp_ instance
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ [ 05-22 08:54:52.160 13969:18091 D/LeakCanary ]
    * Reference Key: bb8124a9-2829-4ff3-8ded-13cf35f80f54
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Device: Genymotion generic Google Nexus 5 - 5.0.0 - API 21 - 1080x1920 vbox86p
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Android Version: 5.0 API: 21 LeakCanary: 1.3.1
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Durations: watch=10898ms, gc=137ms, heap dump=5529ms, analysis=9193ms
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ [ 05-22 08:54:52.160 13969:18091 D/LeakCanary ]
    * Details:
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Class android.text.TextLine
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   static $staticOverhead = byte[] [id=0x70622169;length=24;size=40]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   static sCached = android.text.TextLine[] [id=0x70775010;length=3]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   static DEBUG = false
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   static TAB_INCREMENT = 20
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Array of android.text.TextLine[]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   [0] = android.text.TextLine [id=0x1309a2e0]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   [1] = android.text.TextLine [id=0x12eed650]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   [2] = null
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Instance of android.text.TextLine
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   static $staticOverhead = byte[] [id=0x70622169;length=24;size=40]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   static sCached = android.text.TextLine[] [id=0x70775010;length=3]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   static DEBUG = false
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   static TAB_INCREMENT = 20
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mCharacterStyleSpanSet = android.text.SpanSet [id=0x12e32d80]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mChars = null
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mDirections = null
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mMetricAffectingSpanSpanSet = android.text.SpanSet [id=0x12e32d60]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mPaint = null
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mReplacementSpanSpanSet = android.text.SpanSet [id=0x12e32da0]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mSpanned = android.text.SpannedString [id=0x132dabe0]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mTabs = null
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mText = null
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mWorkPaint = android.text.TextPaint [id=0x1300f5c0]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mCharsValid = false
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mDir = 1
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mHasTabs = false
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mLen = 1
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mStart = 0
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Instance of android.text.SpanSet
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   classType = java.lang.Class [id=0x703bb448;name=android.text.style.CharacterStyle]
05-22 08:54:52.160  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   spanEnds = int[] [id=0x1309fd60;length=2;size=24]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   spanFlags = int[] [id=0x1309fda0;length=2;size=24]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   spanStarts = int[] [id=0x1309fd20;length=2;size=24]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   spans = android.text.style.CharacterStyle[] [id=0x1309fce0;length=2]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   numberOfSpans = 1
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Array of android.text.style.CharacterStyle[]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   [0] = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   [1] = com.gmspartnersltd.earthmiles.views.ActivitySignUp$2 [id=0x130952c0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Instance of com.gmspartnersltd.earthmiles.views.ActivitySignUp$2
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   this$0 = com.gmspartnersltd.earthmiles.views.ActivitySignUp_ [id=0x13361800]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ * Instance of com.gmspartnersltd.earthmiles.views.ActivitySignUp_
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   onViewChangedNotifier_ = org.androidannotations.api.view.OnViewChangedNotifier [id=0x13052dc0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   birthday = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   buttonNext = android.support.v7.widget.AppCompatButton [id=0x13459c00]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   confirmPassword = java.lang.String [id=0x132f01a0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   editTextConformPassword = android.support.v7.widget.AppCompatEditText [id=0x13458400]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   editTextEmail = android.support.v7.widget.AppCompatEditText [id=0x1339b000]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   editTextFirstName = android.support.v7.widget.AppCompatEditText [id=0x13396c00]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   editTextLastName = android.support.v7.widget.AppCompatEditText [id=0x13398800]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   editTextPassword = android.support.v7.widget.AppCompatEditText [id=0x13456c00]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   email = java.lang.String [id=0x132f0040]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   facebook = com.facebook.android.Facebook [id=0x1307ee00]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   fbUserId = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   firstName = java.lang.String [id=0x132f0080]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   gender = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   lastName = java.lang.String [id=0x132f00e0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   location = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mAsyncRunner = com.facebook.android.AsyncFacebookRunner [id=0x130952a0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   password = java.lang.String [id=0x132f0140]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   termsOfUse = android.support.v7.widget.AppCompatTextView [id=0x1345a000]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   text = android.text.SpannableString [id=0x1310eaa0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   fromFacebook = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   etHelpMessage = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mProgressHUD = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   positiveAction = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   showBusyAnimationRequesterCount = 0
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mDelegate = android.support.v7.app.AppCompatDelegateImplV11 [id=0x12ecfd80]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mAllLoaderManagers = android.support.v4.util.SimpleArrayMap [id=0x131d80a0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mContainer = android.support.v4.app.FragmentActivity$2 [id=0x13052db0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mFragments = android.support.v4.app.FragmentManagerImpl [id=0x12f7cf60]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mHandler = android.support.v4.app.FragmentActivity$1 [id=0x1310ea80]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mLoaderManager = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mCheckedForLoaderManager = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mCreated = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mLoadersStarted = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mOptionsMenuInvalidated = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mReallyStopped = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mResumed = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mRetaining = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mStopped = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mActionBar = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mActivityInfo = android.content.pm.ActivityInfo [id=0x12db0180]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mActivityTransitionState = android.app.ActivityTransitionState [id=0x1304b600]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mAllLoaderManagers = android.util.ArrayMap [id=0x131c9d00]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mApplication = com.gmspartnersltd.earthmiles.globalstate.App [id=0x12c6e8c0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mComponent = android.content.ComponentName [id=0x12f64150]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mContainer = android.app.Activity$1 [id=0x13052d70]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mCurrentConfig = android.content.res.Configuration [id=0x12f97520]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mDecor = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mDefaultKeySsb = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mEmbeddedID = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mEnterTransitionListener = android.app.SharedElementCallback$1 [id=0x70765ba8]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mExitTransitionListener = android.app.SharedElementCallback$1 [id=0x70765ba8]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mFragments = android.app.FragmentManagerImpl [id=0x12f7cef0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mHandler = android.os.Handler [id=0x1310ea60]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mInstanceTracker = android.os.StrictMode$InstanceTracker [id=0x13052d90]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mInstrumentation = android.app.Instrumentation [id=0x12c33f70]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mIntent = android.content.Intent [id=0x12f3b300]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mLastNonConfigurationInstances = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mLoaderManager = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mMainThread = android.app.ActivityThread [id=0x12c2b100]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mManagedCursors = java.util.ArrayList [id=0x1310ea40]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mManagedDialogs = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mMenuInflater = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mParent = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mResultData = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mSearchManager = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mTitle = java.lang.String [id=0x12e6d7e0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mToken = android.os.BinderProxy [id=0x12fe86a0]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mTranslucentCallback = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mUiThread = java.lang.Thread [id=0x73b43540]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mVoiceInteractor = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mWindow = com.android.internal.policy.impl.PhoneWindow [id=0x12e5d580]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mWindowManager = android.view.WindowManagerImpl [id=0x1310ed20]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mCalled = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mChangeCanvasToTranslucent = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mChangingConfigurations = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mCheckedForLoaderManager = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mConfigChangeFlags = 0
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mDefaultKeyMode = 0
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mDestroyed = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mDoReportFullyDrawn = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mEnableDefaultActionBarUp = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mFinished = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mIdent = 24993652
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mLoadersStarted = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mResultCode = 0
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mResumed = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mStartedActivity = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mStopped = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mTemporaryPause = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mTitleColor = 0
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mTitleReady = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mVisibleBehind = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mVisibleFromClient = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mVisibleFromServer = false
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mWindowAdded = true
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mInflater = com.android.internal.policy.impl.PhoneLayoutInflater [id=0x13152580]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mOverrideConfiguration = null
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mResources = android.content.res.Resources [id=0x12c33f20]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mTheme = android.content.res.Resources$Theme [id=0x1310ed40]
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mThemeResource = 2131689670
05-22 08:54:52.161  13969-18091/com.gmspartnersltd.earthmiles.debug D/LeakCanary﹕ |   mBase = android.app.ContextImpl [id=0x12c81100]

解决方案

From AndroidExcludedRefs.java:

  // TextLine.sCached is a pool of 3 TextLine instances. TextLine.recycle() has had at least two
  // bugs that created memory leaks by not correctly clearing the recycled TextLine instances.
  // The first was fixed in android-5.1.0_r1:
  // https://github.com/android/platform_frameworks_base/commit
  // /893d6fe48d37f71e683f722457bea646994a10bf

  // The second was fixed, not released yet:
  // https://github.com/android/platform_frameworks_base/commit
  // /b3a9bc038d3a218b1dbdf7b5668e3d6c12be5ee4

  // Hack: to fix this, you could access TextLine.sCached and clear the pool every now and then
  // (e.g. on activity destroy).

Step 1: Access TextLine.sCached

public static class Utils {
    private static final Field TEXT_LINE_CACHED;

    static {
        Field textLineCached = null;
        try {
            textLineCached = Class.forName("android.text.TextLine").getDeclaredField("sCached");
            textLineCached.setAccessible(true);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        TEXT_LINE_CACHED = textLineCached;
    }

    public static void clearTextLineCache() {
        // If the field was not found for whatever reason just return.
        if (TEXT_LINE_CACHED == null) return;

        Object cached = null;
        try {
            // Get reference to the TextLine sCached array.
            cached = TEXT_LINE_CACHED.get(null);
        } catch (Exception ex) {
            //
        }
        if (cached != null) {
            // Clear the array.
            for (int i = 0, size = Array.getLength(cached); i < size; i ++) {
                Array.set(cached, i, null);
            }
        }
    }

    private Utils() {}
}

Step 2: Clear the pool

Call Utils.clearTextLineCache() when needed.

这篇关于在TextView的Andr​​oid的内存泄漏 - LeakCanary(泄漏可以忽略不计)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆