我一直在尝试使用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。
任何帮助将不胜感激。
答案 0 :(得分:0)
如果您想在应用处于后台时收听位置更改,请将您的位置监听器放入服务中。你的听众被删除的事实是因为Android更有可能在你的应用程序处于后台时杀死你的应用程序。如果你真的希望你的服务在低内存条件下存活,那么添加通知给is并make if if foreground(call setForeground)。
IntentService更适合单个但更长的任务,它为您提供了执行您想要在后台执行的任务的功能,并且在完成服务之后可能会完成。这使得它不适合位置监听器。
如果在Activity中实现了位置监听器,那么你可能会在onStop中自己删除它,一旦隐藏了Activity,就会调用它。
以下是示例SO:Background service with location listener in android