Android onLocationChanged停止被调用

时间:2014-02-23 20:03:17

标签: android gps locationlistener

我有一个片段:

public  class myMap extends Fragment implements LocationListener
{
  // do all the usual stuff
@Override
public void onResume()
{
    super.onResume();

    if(mIsGPSEnabled)
    {
        mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 10, this);
    }
    // and of course a bit more of code I am skipping
}
@Override
public void onLocationChanged(Location location) {      
    Toast.makeText(getActivity(), "location changed  " + location.getLatitude() + " " + location.getLongitude(), Toast.LENGTH_LONG).show();

}

我注意到以下行为:

  1. onResume始终是最后一个工作正常的已知位置。
  2. 在我的通知栏上启动应用程序后,我看到GPS上的这个小图标
  3. 过了一会儿我第一次打电话给onLocationChanged(到目前为止一切都很好)
  4. 现在,小GPS图标从通知栏消失,onLocationChanged再也不会被调用。该应用程序始终位于forground
  5. 我从未取消注册(现在)我的位置更改侦听器
  6. 我把我的应用程序带到后台并以osmand(导航软件)开始运行,当这个软件运行时,我会在每次更新时看到onLocationChanged上的toast,正常工作。
  7. 有人有想法吗?

2 个答案:

答案 0 :(得分:0)

检查是否

  

mLocationManager!= null

如果为null,则可以requestteLocationUpdates,否则将无法调用请求

答案 1 :(得分:0)

使用日志并使用free logcat app或其来观看,以确保您的位置未更新:

  Toast.makeText(getApplicationContext(), "location changed  " + location.getLatitude() + " " + location.getLongitude(), Toast.LENGTH_LONG).show();

因为我认为您的默认主屏幕不是活动!这就是为什么吐司出现在osmand和你的应用程序中,而不是在主屏幕上。

所以我认为你在一个着名的android位置api问题,我花了30多天才知道很多人有同样的问题!,如果你看看这里你会感觉更好{{3} }

问题没有限制没有算法没有特殊情况:>>获得第一个位置,停留一段时间,完美地工作两天,并切换工作n停止一个星期...... !!

我认为你必须购买新的测试手机!