Я загружаю карту 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 все еще это блокирует пользовательский интерфейс или
неправильно загружает маркеры. иногда он загружает маркеры, иногда
не загружать все маркеры.