MapView.onPause在Google Maps API v2 for Android中挂起



我有一个Fragment(来自支持库),其中包括一个MapView(来自Google Maps API v2)。当一个属于标记的信息窗口被点击时,我想从包含MapViewFragment切换到包含标记所代表的地方的详细信息的另一个Fragment。为了切换,我使用以下代码:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.detach(oldFragment)
  .add(R.id.fragment_container, newFragment, tag)
  .addToBackStack(null)
  .commit();
getSupportFragmentManager().executePendingTransactions();

问题是,点击信息窗口后,应用程序挂起。我能够逐步通过调试器,却发现最终原因是调用MapView.onPause()触发的谷歌地图API v2库中的Object.wait(),我必须按照MapView文档调用。

我还试图注释出onPause()调用,但是另一个Object.wait()是从Google Maps API v2库中的另一个方法触发的,并且应用程序仍然挂起。我还试着把整个MapFragment代替MapView,但没有任何变化。

我找不到有同样问题的人,所以我几乎迷路了。知道发生了什么,我做错了什么,我该怎么解决这个问题吗?

经过进一步调查,罪魁祸首似乎是对executePendingTransactions()的调用,或者它与MapView/MapFragment的交互方式。当该调用被删除时,应用程序停止挂起。

最新更新