我想我做得对吗?
我有这个代码,它开始通过这里没有显示的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);
哪个解析但在运行时给我一个“无法暂停”错误。
答案 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();
}