NMEA位置听众被杀

时间:2014-04-03 08:57:02

标签: android gps locationlistener nmea

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

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

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

但是经过一段时间我的NMEAListener被android删除了。

My Mainactivity.java类声明了以下实例

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

我点击按钮

初始化Main活动类中的监听器
nmeaMessageListener =   new NMEAMessageListener();


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


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

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

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您想在应用处于后台时收听位置更改,请将您的位置监听器放入服务中。你的听众被删除的事实是因为Android更有可能在你的应用程序处于后台时杀死你的应用程序。如果你真的希望你的服务在低内存条件下存活,那么添加通知给is并make if if foreground(call setForeground)。

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

如果在Activity中实现了位置监听器,那么你可能会在onStop中自己删除它,一旦隐藏了Activity,就会调用它。

以下是示例SO:Background service with location listener in android