小编Dad*_*boy的帖子

如果在AsyncTaskLoader运行期间发生方向更改,则不会调用LoaderCallbacks.onLoadFinished

使用android-support-v4.jar和FragmentActivity(此时没有片段)

我有一个AsyncTaskLoader,我开始加载,然后在后台线程仍在运行时更改方向.在我的日志中,我看到响应来自后台请求.响应完成,我希望调用onLoadFinished(),但它永远不会.

作为一种故障排除方法,在Manifest中,如果我设置android:configChanges ="orientation"onLoadFinished()按预期调用.

我的Activity实现了加载器回调.在LoaderManager.initLoader()的源代码中,我看到如果加载器已经存在,则新的回调设置为LoaderInfo内部对象类,但我没有看到再次调用Loader.registerListener()的位置.只有在调用LoaderManagerImpl.createAndInstallLoader()时才会调用registerListener.

我怀疑,由于活动在方向更改时被销毁并重新创建,并且由于它是回调的监听器,因此未注册新活动以通知.

任何人都可以确认我的理解和解决方案,以便在方向改变后调用onLoadFinished?

android

19
推荐指数
1
解决办法
7535
查看次数

TextView未删除的ChangeWatchers导致内存泄漏

我们有活动和碎片泄漏,并将原因追溯到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

5
推荐指数
1
解决办法
1338
查看次数

标签 统计

android ×2