【问题标题】:Android GPS Location Update Method does not work in OnCreate of Map activityAndroid GPS 位置更新方法在地图活动的 OnCreate 中不起作用
【发布时间】:2011-09-26 14:33:53
【问题描述】:

我遇到了LocationManager 类的问题:

我想更新我在onCreate() 中的当前位置,该类是从MapActivity 扩展而来的:

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

getLastKnownLocation() 返回位置但不准确,我想调用LocationManager.requestLocationUpdates(),它在onCreate() 中返回null

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

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

【问题讨论】:

    标签: android android-location


    【解决方案1】:

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

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

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

    【讨论】:

    • 另外,requestLocationUpdates() 不返回任何内容 (void),而不是 null
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 2013-08-09
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多