我的应用每3秒通过LocationServices.FusedLocationApi
向Google服务部门请求位置更新。它有一个漂亮的小卫星图标,用于指示GPS是否正常工作。
我实施了ConnectionCallbacks
,OnConnectionFailedListener
,LocationListener
接口,以便恰当地更改图标:
@Override
public void onConnected(Bundle arg0)
{
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this); // starts location updates
SetConnectionStatus(false); // AKA change GPS status icon to "not connected"
}
@Override
public void onConnectionSuspended(int arg0)
{
LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this);
SetConnectionStatus(false);
}
@Override
public void onConnectionFailed(ConnectionResult arg0)
{
LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this);
SetConnectionStatus(false);
}
@Override
public void onLocationChanged(Location arg0)
{
if (arg0 == null)
{
SetConnectionStatus(false);
return;
}
SetConnectionStatus(true);
}
现在,除了一种情况外,这看起来像魅力。我在手机中打开GPS并启动应用程序。图标很快就会从"未连接"到"连接"我在LogCat中每隔3秒开始获取更新。然后,我最小化应用程序并关闭GPS。图标仍显示"已连接"尽管我完全停止了新的位置更新(LogCat不打印它们)。
我的问题是,如何检测到我停止获取新数据?我应该实施一些听众吗?我不想创建一个单独的帖子,其唯一的目的是每5秒检查一次我是否仍然得到更新。