Хотел асинхронно загружать маркеры на карты в Xamarin.Android - PullRequest
1 голос
/ 04 июля 2019

Я загружаю карту Google, а затем добавляю маркеры на карту, обычно это занимает От 4 до 7 секунд, чтобы загрузить карту с маркерами, но я хочу улучшить производительность приложения, поэтому сначала я просто хочу показать карту и в фоновом режиме Я хочу загрузить маркеры и применить на карте позже. я пробовал так много способов, как Task.Run (), Thread (threadStart ()), RunonUiThread () ничего не работает. RunonUiThread и threadstart блокируют пользовательский интерфейс и требуют больше времени для загрузки, где в Task.Run не загружается маркеры на карте.

    protected override void OnCreate(Bundle savedInstanceState)
        {
        base.OnCreate(savedInstanceState);
          SetUpMap();
         }


    SetUpMap(){
        if (_map == null)
        {
            Utils.mapFrag = 
         (MapFragment)FragmentManager.FindFragmentById(Resource.Id.map);
            RunOnUiThread(() =>
                {
             //initializing map which is calling IOnMapReady 
                 asynchronously
                    Utils.mapFrag.GetMapAsync(this); 
                });

        }
        else
        {
            LoadMarkersOnMap(_map);
        }

    }

    public void OnMapReady(GoogleMap googleMap)
    {
        _map = googleMap;
        _map.UiSettings.MapToolbarEnabled = false;
        _map.UiSettings.MyLocationButtonEnabled = false;
        _map.UiSettings.ZoomControlsEnabled = false;
        Utils.map = googleMap;
        System.Threading.Tasks.Task.Run(() =>
        {
            LoadMarkersOnMap(_map);
            if (progressDialog != null && progressDialog.IsShowing)
                progressDialog.Dismiss();
        });
  }

 LoadMarkerOnMap(Googlemap _map){
 RunOnUiThread(()=>{
 //here i m getting the list of markers from the database
 and adding it to map 

});

 }

даже я пытался без установки runonUithread все еще это блокирует пользовательский интерфейс или неправильно загружает маркеры. иногда он загружает маркеры, иногда не загружать все маркеры.

1 Ответ

0 голосов
/ 04 июля 2019

Взгляните на документы Xamarin здесь: Написание отзывчивых приложений .

...