这是对我更老、更广泛的问题的答案所引发的研究的延续。
使用单个游标(通过 CursorLoader 获得)来提供两个不同的视图是否正确,即:
- 通过 SimpleCursorAdapter 的ListView
- com.google.android.gms.maps。带标记的谷歌地图?
到目前为止我得到的结果:
- 如果两个视图同步地给出光标(即:不涉及其他线程),那么视觉上一切正常,除了填充 GoogleMap 时 UI 被严重阻塞
- 如果 GoogleMap 是从AsyncTask中的 Cursor 填充的,则 UI 会变得响应,但ListView存在异常:一些行重复,还有一些标记没有到达地图。
我的设置的详细信息
- 在onResume()期间在FragmentActivity中加载 SQLite 游标
- 上述活动承载ViewPager有两个片段:ListFragment和SupportMapFragment(使用 ViewPager 的结果是两个片段将始终处于活动状态)
- 来自活动的游标通过Otto总线传递到片段(对于不熟悉的:这只是回调接口的精简替代,它在主线程上同步传递结果)