Xamarin/Android - 位置侦听器服务调用错误

Xamarin/Android - Location Listener Service call error

我正在尝试为经度和海拔等位置信息创建一个包装器。我创建了一个从 java.lang.object 扩展并实现 ILocationListener 的 class。然后我创建了一个 service 来创建这个 class 的对象来获取最新的经度和纬度。代码编译没有任何错误。

此处大部分代码来自在线示例。问题是我收到 运行 时间错误,提示 Can't create handler inside thread that has not called Looper.prepare() 请注意这里没有 UI。我确实尝试将 "this" 作为服务的上下文传递,但这没有任何区别。

有人知道为什么我会收到关于 Looper.prepare() 的 运行 时间错误吗? 提前致谢。

public  class GeoInfoService : Java.Lang.Object, ILocationListener
{
    public GeoInfo GeoInfoResult { get; set; }

    [System.ComponentModel.DefaultValue(30000)]
    public long MinimumTimeForUpdate { get; set; }

    [System.ComponentModel.DefaultValue(1)]
    public float MinimumDistanceForUpdate {get; set;}

    [System.ComponentModel.DefaultValue(true)]
    public bool isProviderEnabled { get; set; }

    [System.ComponentModel.DefaultValue("")]
    public string Status { get; set; }

    [System.ComponentModel.DefaultValue("")]
    public string Provider { get; set; }

    [System.ComponentModel.DefaultValue(false)]
    public bool hasError { get; set; }

    public System.Text.StringBuilder lastError { get; set; }

    LocationManager locMgr;
    string tag = "GeoInfoService";

    public GeoInfoService(Context context) 
    {
        lastError = new System.Text.StringBuilder ();
        MinimumTimeForUpdate = 2000;
        MinimumDistanceForUpdate = 1;

        locMgr =  context.GetSystemService (Context.LocationService) as LocationManager;

            var locationCriteria = new Criteria ();
            locationCriteria.Accuracy = Accuracy.NoRequirement;

            locationCriteria.PowerRequirement = Power.NoRequirement;// Power.Medium;
            string locationProvider = locMgr.GetBestProvider (locationCriteria, true);
            Log.Debug (tag, "Starting location updates with " + locationProvider.ToString ());


//THIS IS where we have the error java.lang.RuntimeException
//Can't create handler inside thread  that has not called Looper.prepare()
//  I also replaced "this" with context that was passed from the service

            locMgr.RequestLocationUpdates (locationProvider, MinimumTimeForUpdate, MinimumDistanceForUpdate, this);

    }

我离开了 context 丛林。我的意图是创建一个 class,我可以按需更新并获取 location 信息。但这有几个问题,重要的是 location 信息没有缓存,只能通过 onLocationChange 获取。

所以我刚刚创建了一个服务并实现了 ILocation 接口,并在一个地方完成了我的所有逻辑。