使用android-support-v4.jar和FragmentActivity(此时没有片段)
我有一个AsyncTaskLoader,我开始加载,然后在后台线程仍在运行时更改方向.在我的日志中,我看到响应来自后台请求.响应完成,我希望调用onLoadFinished(),但它永远不会.
作为一种故障排除方法,在Manifest中,如果我设置android:configChanges ="orientation"onLoadFinished()按预期调用.
我的Activity实现了加载器回调.在LoaderManager.initLoader()的源代码中,我看到如果加载器已经存在,则新的回调设置为LoaderInfo内部对象类,但我没有看到再次调用Loader.registerListener()的位置.只有在调用LoaderManagerImpl.createAndInstallLoader()时才会调用registerListener.
我怀疑,由于活动在方向更改时被销毁并重新创建,并且由于它是回调的监听器,因此未注册新活动以通知.
任何人都可以确认我的理解和解决方案,以便在方向改变后调用onLoadFinished?
我们有活动和碎片泄漏,并将原因追溯到TextViews上看起来未被移除的ChangeWatchers.
场景:活动A启动活动B. B在其布局中有一个textPassword EditText字段.活动B结束.
HPROF转储显示活动B仍然有一个实例.其gcroot路径如下:
test.maa.LoginActivity
'- mContext android.widget.EditText
'- this$0 android.widget.TextView$ChangeWatcher
'- [1] java.lang.Object[13]
'- mSpans android.text.SpannableStringBuilder
'- mSource android.text.method.PasswordTransformationMethod$PasswordCharSequence
'- mText android.text.MeasuredText
'- mMeasured android.text.StaticLayout
'- sStaticLayout class android.text.DynamicLayout
Run Code Online (Sandbox Code Playgroud)
如果您将Linkify.addLinks链接到TextView,也会发生这种情况.
有没有办法清理活动B?
android ×2