0

这是answer针对我的较老的更广泛问题产生的一项研究的延续。对多个ListView使用单个光标

是否正确使用单个光标(通过CursorLoader获得)喂养两个不同的观点,即:经由SimpleCursorAdapter

  1. 的ListView
  2. com.google.android.gms.maps。 GoogleMap带标记?

结果即时具有迄今:

  1. 如果两个视图中给出光标同步(即:没有其他线程参与),比在视觉上都工作正常,除了UI被显着阻止时填充的GoogleMap
  2. 如果GoogleMap的是从光标的AsyncTask被填充,那么UI可以响应,但很异常与的ListView:某些行是重复的,也有一些标记都没有得到的地图。我的设置

    1. SQLite的光标的

    细节在FragmentActivity期间的onResume()

  3. 上述活动承载ViewPager装有两个片段:ListFragmentSupportMapFragment(其后果使用ViewPager的是,这两个片段将始终处于活动状态)
  4. Cur从活动SOR通过Otto总线交付给片段(对于不熟悉的:这不过是薄替代回调接口,主线程同步带来的结果)

回答

1

我相信这是正确的做到这一点。可以改进的是,如果MapFragment不可见,则不会填充Map。当用户滑动到MapFragment页面时,它会填充它。

另外,你甚至可以做以下事情。当MapFragment不可见时,它开始填充地图,但它以块的形式进行(例如,通过块中的5个标记)。一旦填充了一个组块,就可以通过调度另一个可在主线程处理程序中执行的runnable来开始下一个组块。这不会阻止主线程,并会在后台准备地图。

+1

是的,我认为这也是异步填充地图的方式。我的设置中的一个特殊问题是共享游标必须以某种方式缓存,直到将来映射可能需要时的某些非确定性时刻。 同时,我设法通过从股票GoogleMap切换到android-maps-extensions来缓解整个痛苦,其中包括提供异步人口。 – esteewhy