如何在不阻塞主线程的情况下调用xamarin中的GetMapAsync?

时间:2016-05-26 14:04:58

标签: google-maps android-fragments xamarin

我正在尝试实现一个实现谷歌地图并在其上显示标记的片段。

片段目前有两个子节点,一个按钮和一个具有属性

的片段
class="com.google.android.gms.maps.MapFragment"

当我的viewpager切换到那个(或一个close by)片段时,ui会冻结一点

我目前所做的是在我调用的片段的OnCreateView方法中:

            MapFragment map_fragment = FragmentManager.FindFragmentById<MapFragment>(Resource.Id.maps_map);
        map_fragment.GetMapAsync(this);

然后我让片段实现了IOnMapReadyCallback接口,我在那里完成所有工作

我尝试创建AsyncTask并让GetMapAsync方法在其DoInBackground中运行,但是我得到一个错误,即必须在主线程上运行GetMapAsync

有没有办法避免冻结?

1 个答案:

答案 0 :(得分:0)

尝试查看文档Add a map to an Android app

在这里,您可以查看如何将Fragment对象添加到将处理地图的Activity,如何实现OnMapReadyCallback界面并使用onMapReady(GoogleMap)回调方法获取GoogleMap的句柄,以及如何调用/使用片段上的getMapAsync()来注册回调。

有关详细信息和示例代码,请访问我在文档中提供的链接。

如果它可以帮助您并了解更多信息,您也可以查看SO question