Si je crée une instance de CLLocationManager uniquement sur UIThread, l'événement LocationUpdated sera déclenché. Pourquoi cela se produit-il? Il n'y a aucune trace dans la documentation Xamarin et Apple que CLLocationManager doit être created
sur UIThread.Pourquoi CLLocationManager ne fournit-il pas d'événements à gérer?
Un code demande locationManager.RequestWhenInUseAuthorization(); NSLocationWhenInUseUsageDescription est setted dans Info.plist
private void CreateLocationManagerWorkingOption() {
ExecuteOnMainThread (() => {
locationManager = new CLLocationManager();
});
locationManager.LocationsUpdated += (object sender, CLLocationsUpdatedEventArgs e) => {
OnLocationChanged (locationManager,e.Locations [e.Locations.Length - 1]);
};
}
private void CreateLocationManagerNotWorkingOption() {
ExecuteOnSomeThread(()=> {
locationManager = new CLLocationManager();
});
locationManager.LocationsUpdated += (object sender, CLLocationsUpdatedEventArgs e) => {
OnLocationChanged (locationManager,e.Locations [e.Locations.Length - 1]);
};
}
private void StartTrackingImpl() {
ExecuteOnMainThread (() => locationManager?.StartUpdatingLocation());
}
Cela influe uniquement sur StartUpdatingLocation et d'autres méthodes de mise à jour. Il n'y a pas d'informations sur le constructeur. De plus, j'ai parlé de la documentation de Xamarin, car mono peut affecter CLLoationManager. – Alexander