UIThread에서만 CLLocationManager 인스턴스를 만들면 LocationUpdated 이벤트가 발생합니다. 왜 이런 일이 발생합니까? Xamarin 및 Apple 설명서에 CLLocationManager가 UIThread에서 created
이어야한다는 단서가 없습니다.CLLocationManager가 처리 할 이벤트를 제공하지 않는 이유는 무엇입니까?
일부 코드는 locationManager.RequestWhenInUseAuthorization(); NSLocationWhenInUseUsageDescription은의 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());
}
StartUpdatingLocation 및 기타 업데이트 방법에만 영향을줍니다. 생성자에 대한 정보는 없습니다. 게다가 모노는 CLLoationManager에 영향을 줄 수 있기 때문에 Xamarin 문서화를 의미했습니다. – Alexander