【问题标题】:Android GPS Listener always runningAndroid GPS Listener 一直在运行
【发布时间】:2010-10-13 17:58:22
【问题描述】:

我在我的应用中实现了 GPS,在这样的一个 Activity 中:

 LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        LocationListener mlocListener = new MyLocationListener();
        mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);

public class MyLocationListener implements LocationListener
    {
        public void onLocationChanged(Location location)
        {
            if (location != null) { //do something} 
        ...
        }

这工作正常。在进一步改进应用程序后,我意识到我需要在不止一项活动中使用 GPS。我需要能够检查 gps 是否处于活动状态以及它从 3 个活动返回的位置。

想象一下这个场景:用户启动应用程序。在后台,当用户选择一些选项时,GPS 正在尝试获取卫星连接。当我进行需要位置信息的活动时,我会要求它。

我怎样才能做到这一点?这应该在另一个线程中运行吗?请建议我。谢谢

【问题讨论】:

    标签: android gps


    【解决方案1】:

    我已将其实现为 Android Service

    public class MyPositioningService extends Service {
      @Override
      public void onCreate() {
        // init LocationManager as you are doing
      }
    
      @Override
      public void onDestroy() {
        // LocationManager#removeUpdates
      }
    }
    

    您可以在用户启动应用程序时启动它:

    Intent i = new Intent(context, MyPositioningService.class);     
    context.startService(i);
    

    【讨论】:

    • 非常感谢您的帮助。关于电池寿命,您能提供哪些建议?仅在某些屏幕上需要 GPS,我需要能够在其他屏幕上禁用它。没有?
    • 好问题。您可以持续启用/禁用它,但您可能不需要服务。取而代之的是,您可以将代码移动到帮助程序类并从您的 3 个活动中调用它,以便仅在需要时获取当前修复。您可以做的(如果您使用服务)来节省电池寿命是使用 minTime 和 minDistance 参数调用 requestLocationUpdates 。这样你就可以得到一个修复,即每 5 分钟一次。
    • 我想我会去帮助类。您能否提供一些代码示例,例如带有服务的代码示例或指导我学习教程。我会尝试同时做点什么。非常感谢
    【解决方案2】:

    将其放在 onPause() 方法中将在离开 Activity 时进行停用:mlocManager.removeUpdates(mlocListener);

    如果您有多个活动需要 gps 侦听器,我会选择放置位置管理器和侦听器的辅助类。在那里,我将有公共方法来初始化它们并启动侦听器,以获取最后一个已知位置并停用更新。不要忘记在您的活动中添加对接收更新的支持。 这是一个很好的例子:
    Android find GPS location once, show loading dialog

    【讨论】:

      猜你喜欢
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多