我正在尝试为位置信息(例如经度和海拔高度)创建包装器。我创建了一个从java.lang.object扩展的类,并实现了ILocationListener。然后我创建了一个service
,它创建了这个类的对象以获得最新的经度和纬度。代码编译没有任何错误。
这里的大多数代码来自在线样本。问题是我收到运行时错误Can't create handler inside thread that has not called Looper.prepare()
请注意,此处没有用户界面。我确实试图通过"这个"作为服务的背景,但没有任何区别。
任何人都知道为什么我收到关于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);
}
答案 0 :(得分:0)
我让自己离开了context
丛林。我的目的是创建一个我可以按需创建的类,并获取location
信息。但是有一些问题,重要的是location
信息没有被缓存,只能通过onLocationChange
获得。
所以我刚刚创建了一个服务并实现了ILocation接口,并在一个地方完成了我的所有逻辑。