我正在尝试在Google Maps Marker的InfoWindow中设置ImageView,并从这个答案中复制了代码,除了我的InfoWindowAdapter不是匿名内部类(它只是活动的内部类)。之前这样可以工作,但出于某些原因它停止工作了——回调中的onSuccess方法没有被调用,因此InfoWindow只在第二次打开时显示图像。
查看Picasso的日志,我得到类似于
这里可能发生了什么,我该如何解决?错误信息中的
另一个奇怪的事情是,有时当首次打开InfoWindow时,图片会正确加载——我正在尝试找出原因,但基本上我有很多标记,它们的图片在第一次尝试时是否正确加载似乎不一致。有些(大多数)在第一次打开InfoWindow时似乎永远无法正确加载。
[编辑]这是在大量代码合并到那个活动之后,所以可能是内存问题吗?(现在比之前处理的内容更多)
[编辑2]我用Glide遇到了完全相同的问题!可能是垃圾收集?
查看Picasso的日志,我得到类似于
Main canceled [R20]+374ms target got garbage collected
的消息。我想这可能是因为Callback被gc了,尝试将其设为final,并保存在类字段中(但都没起作用,或许我做错了?)。这里可能发生了什么,我该如何解决?错误信息中的
target
是指回调吗,还是可能指传递给回调构造函数的标记?另一个奇怪的事情是,有时当首次打开InfoWindow时,图片会正确加载——我正在尝试找出原因,但基本上我有很多标记,它们的图片在第一次尝试时是否正确加载似乎不一致。有些(大多数)在第一次打开InfoWindow时似乎永远无法正确加载。
[编辑]这是在大量代码合并到那个活动之后,所以可能是内存问题吗?(现在比之前处理的内容更多)
[编辑2]我用Glide遇到了完全相同的问题!可能是垃圾收集?
.into()
,但我收到相同的消息和问题(不确定我是否正确处理了它)[编辑] 显然,回调始终被保留为强引用。 - false_azure