在我的Xamarin android项目中,创建了一个服务并订阅该服务,以从定位服务获取更新。但这没用。然后,将那部分代码直接移到活动类。但这不再起作用!我已经在Google Android中使用过几次这些方法。我无法检测出这里的问题。我的代码是:
[Service]
class LocationManagementService : Service
{
...
public override void OnStart(Intent intent, int startId)
{
locationManagement = new LocationManagement(this);
locationManagement.StartUpdate();
}
}
....
class LocationManagement{
LocationCallBack callBack = new LocationCallBack();
public void StartUpdate()
{
LocationRequest locationRequest = new LocationRequest()
.SetPriority(LocationRequest.PriorityHighAccuracy)
.SetInterval(1000 * 5)
.SetFastestInterval(1000 * 2);
FusedLocationProviderClient fused =
LocationServices.GetFusedLocationProviderClient(context);
Task.Run(() =>
{
fused.RequestLocationUpdatesAsync(locationRequest, callBack);
});
}
class LocationCallBack: LocationCallback
{
private Context context;
public LocationCallBack(Context context)
{
this.context = context;
}
public override void OnLocationAvailability(LocationAvailability locationAvailability)
{
var a = locationAvailability.IsLocationAvailable;
}
public override void OnLocationResult(LocationResult result)
{
if (result.Locations.Any())
{
var location = result.Locations.First();
var a = location.Latitude;
}
else
{
// No locations to work with.
}
}
}
我已经在回调事件上设置了断点,但是没有一个被解雇!
注意:当我将这些代码更改为LocationManager时,效果很好。
这里有什么问题?