onPause停止LocationManager

时间:2011-12-18 00:00:14

标签: android locationmanager

我想我做得对吗?

我有这个代码,它开始通过这里没有显示的MyLocationListener方法查找我的GPS位置,但是我想停止locationManager onPause,我想或者当这个活动不是最新的时候,但我不能得到removeUpdates要解析的代码。

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);        
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, new MyLocationListener());

然后,

@Override 
public void onPause()
{
    super.onPause();
    locationManager.removeUpdates(MyLocationListener);
}

“MyLocationListener”不会解决,我也试过“这个”,

locationManager.removeUpdates((LocationListener) this);

哪个解析但在运行时给我一个“无法暂停”错误。

3 个答案:

答案 0 :(得分:8)

我有一个类似的问题: Having some trouble getting my GPS sensor to stop

您可能需要定义一个LocationListener,它对于启动的那个和结束的那个是相同的。

尝试:

LocationListener mlocListener; 

在类名下,然后在onCreate方法中使用以下内容:

mlocListener = new MyLocationListener();

并为整个班级使用上述mlocListener。

所以你的班级看起来像这样:

public class SomeClass extends Activity {
    LocationManager mlocManager;
    LocationListener mlocListener; 

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.screenlayout);
    mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    mlocListener = new MyLocationListener();
    mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}

@Override
public void onPause(){
    mlocManager.removeUpdates(mlocListener);
    super.onPause();
} 

答案 1 :(得分:4)

您可以在LocationListener课程中实施Activity界面:

public class MyActivity extends Activity implements LocationListener {

    private LocationManager mLocMgr;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE);
        mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 100, this);

    }

    @Override
    public void onLocationChanged(Location location) {}
    @Override
    public void onProviderDisabled(String arg0) {}
    @Override
    public void onProviderEnabled(String provider) {}
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {}

    @Override
    public void onPause() {
        super.onPause();
        mLocMgr.removeUpdates(this);
    }
}

答案 2 :(得分:2)

我认为您只需要切换超级onPause调用和removeUpdates调用的顺序。

@Override 
public void onPause()
{
    locationManager.removeUpdates(MyLocationListener);
    super.onPause();
}