【问题标题】:NMEA location Listener KilledNMEA 位置侦听器被杀
【发布时间】:2014-04-03 08:57:02
【问题描述】:

我一直在尝试在 android 中使用 NMEANListener 开发位置监听器。

我有一个带有开始按钮的主要活动。单击开始按钮初始化 locationManager 和 NMEAListener。 在此之后,我在

中收到通知
public void onNmeaReceived(long arg0, String arg1)

但是一段时间后,我的 NMEAListener 被 android 删除了。

我的 Mainactivity.java 类声明了以下实例

private LocationManager locManager  =   null;
private TextView output     =   null;
private NMEAMessageListener nmeaMessageListener     =   null;

单击按钮时,我在 Main Activity 类中初始化监听器

nmeaMessageListener =   new NMEAMessageListener();


locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000,100,nmeaMessageListener);


Location location=locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

请告诉我 Listener 被 android 删除的原因。 有没有更好的方法来做到这一点。我想让我的位置监听器长时间运行。 我应该使用 intentservice 来启动 NMEANListener。

我们将不胜感激。

【问题讨论】:

    标签: android gps locationlistener nmea


    【解决方案1】:

    如果您想在应用处于后台时侦听位置变化,请将您的位置侦听器放在 Service 中。您的侦听器被删除的事实是因为Android更有可能在您的应用程序处于后台时杀死它。如果您真的希望您的服务能够在低内存条件下生存,那么将通知添加到 is 并 make if foreground(调用 setForeground)。

    IntentService 更适合单个但较长的任务,它为您提供了执行您想要在后台执行的任务的功能,完成后服务可能会完成。这使得它不适合位置侦听器。

    如果位置监听器是在 Activity 中实现的,那么您可能会在 onStop 中自己将其移除,一旦 Activity 被隐藏就会调用它。

    这里是示例 SO:Background service with location listener in android

    【讨论】:

      猜你喜欢
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 2011-08-16
      • 1970-01-01
      • 2017-11-05
      • 2011-10-17
      • 1970-01-01
      相关资源
      最近更新 更多