Android GPS位置更新方法在OnCreate of Map活动中不起作用

时间:2011-09-26 14:33:54

标签: android android-location

我遇到了LocationManager类的问题:

我想更新onCreate()扩展的MapActivity中的当前位置:

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

虽然getLastKnownLocation()会返回位置但不准确,但我想调用LocationManager.requestLocationUpdates()null返回onCreate()

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

有人能告诉我如何在我的onCreate()中获取当前位置吗?

3 个答案:

答案 0 :(得分:1)

LocationManager仅使用提供的侦听器与您的代码进行通信。当新的地理位置修复程序可用时,系统会在您创建的lcs类的MyLocationListener实例中调用onLocationChanged()

您不希望在等待onCreate()中的第一个位置修复时强行关闭您的应用。

最佳做法是使用LocationManager.removeUpdates(LocationListener)LocationListeneronResume()再次<{1}}注册<{1}},然后取消注册。当您的应用不在前台时,您的用户会感谢您没有耗尽电量:)

答案 1 :(得分:1)

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

我实现了我的目标,实现了很少的时间延迟,每件事情都开始正常工作,我的主要目标是获得Oncreate方法的位置。它得出的结论是OnCreate方法首先调用OnResume,如果你想使用map randering获取当前位置,那么你必须先等待map渲染,然后调用位置更新代码。

答案 2 :(得分:0)