Android GPS Listener始终在运行

时间:2010-10-13 17:58:22

标签: android gps

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

 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正试图获得卫星连接。当我进入需要位置信息的活动时,我会要求它。

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

2 个答案:

答案 0 :(得分:2)

我已将其实施为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);

答案 1 :(得分:0)

将此放置在onPause()方法中将在离开活动时执行取消激活:mlocManager.removeUpdates(mlocListener);

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