我遇到了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()
中获取当前位置吗?
答案 0 :(得分:1)
LocationManager
仅使用提供的侦听器与您的代码进行通信。当新的地理位置修复程序可用时,系统会在您创建的lcs
类的MyLocationListener
实例中调用onLocationChanged()
。
您不希望在等待onCreate()
中的第一个位置修复时强行关闭您的应用。
最佳做法是使用LocationManager.removeUpdates(LocationListener)
在LocationListener
中onResume()
再次<{1}}注册<{1}},然后取消注册。当您的应用不在前台时,您的用户会感谢您没有耗尽电量:)
答案 1 :(得分:1)
谢谢,各位回答并给出了非常合理的建议,但不幸的是,这些对我没有用。
我实现了我的目标,实现了很少的时间延迟,每件事情都开始正常工作,我的主要目标是获得Oncreate方法的位置。它得出的结论是OnCreate方法首先调用OnResume,如果你想使用map randering获取当前位置,那么你必须先等待map渲染,然后调用位置更新代码。
答案 2 :(得分:0)