我在我的应用中实现了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正试图获得卫星连接。当我进入需要位置信息的活动时,我会要求它。
我怎样才能做到这一点?这应该在另一个线程中运行吗?请建议我。谢谢
答案 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