0

我在LocationManager课堂上面临一个问题:

我想在onCreate()一个扩展自以下的类中更新我的当前位置MapActivity

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyLocationListener lcs = new MyLocationListener();       
lcs.onLocationChanged(lm.getLastKnownLocation(LocationManager.GPS_PROVIDER));

而返回位置但不准确,getLastKnownLocation()我想调用LocationManager.requestLocationUpdates()which 返回:nullonCreate()

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
MyLocationListener lcs=new MyLocationListener();         
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, lcs);

谁能告诉我如何在我的 中获得我当前的位置onCreate()

4

3 回答 3

1

谢谢大家的回应并给出了非常合理的建议,但不幸的是这些对我没有用。

我通过实现很少的时间延迟来实现我的目标,并且每件事都开始正常工作,并且我在 Oncreate 方法中获取位置的主要目标已经实现。它得出的理解是,如果您想通过地图分级获取当前位置,则首先调用 OnCreate 方法,然后调用 OnResume 方法,那么您将不得不等待首先渲染地图,然后调用位置更新代码。

于 2011-09-27T06:38:17.487 回答
1

LocationManager仅使用提供的侦听器与您的代码通信。当新的位置修复可用时,onLocationChanged()将在您创建lcs的类的实例中调用。MyLocationListener

您不想在等待第一个位置修复时冒着被强制关闭应用程序的风险onCreate()

最佳做法是注册您的LocationListenerinonResume()并在using中再次取消注册。当您的应用不在前台时,您的用户会感谢您没有耗尽他们的电池 :)onPause()LocationManager.removeUpdates(LocationListener)

于 2011-09-26T14:45:50.373 回答