Android onLocationChanged已停止调用

Android onLocationChanged已停止调用,android,gps,locationlistener,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(LocationManag

我有一个片段:

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();

}
我注意到以下行为:

  • onResume总是获取最后一个工作正常的已知位置
  • 当在我的通知栏上启动应用程序时,我看到了GPS开启的小图标
  • 过了一会儿,我第一次更改了onLocation(到目前为止一切正常)
  • 现在,小GPS图标从通知栏中消失,并且不再调用onLocationChanged。该应用程序始终处于默认状态
  • 我从未(目前)注销我的位置更改侦听器
  • 我把我的应用程序放在后台,然后启动osmand(一个导航软件),当这个软件运行时,我看到我的toast in onLocation在每次更新时都发生了变化,正常工作
  • 有人有主意吗?

    检查一下

    mLocationManager!=空的


    如果为空,则可以请求定位更新,否则避免调用请求使用日志并使用或监视它,以确保您的位置未更新:

      Toast.makeText(getApplicationContext(), "location changed  " + location.getLatitude() + " " + location.getLongitude(), Toast.LENGTH_LONG).show();
    
    因为我不认为你的默认主屏幕是一个活动!这就是为什么祝酒会出现在osmand和你的应用程序中,而不会出现在主屏幕上

    所以我想你是在一个著名的android位置api问题上,我花了30多天才知道有很多人都有同样的问题!,如果你看看这里,你会感觉更好

    问题没有限制没有算法没有特殊情况:>>获取第一个位置,停止一段时间,完美工作两天,切换工作和停止一周


    我想你必须买一部新的测试手机

    你确定它没有请求更新吗?你将最短请求时间设置为1分钟,这样你至少一分钟内不会得到更新。我确定,在城里转悠了15分钟……你在HTC Hero上测试了吗?我在调试器中检查过,它不是空的。如果为空,则即使是第一次更新也不起作用,但这是可行的。好的,但多次调用requesteUpdates是错误的。你应该打一次电话。