我有一个带有两个按钮的应用程序,用于启动和停止GPS跟踪。我希望用户能够在应用程序运行时离开它,但同时继续跟踪位置。返回时,用户应该能够使用停止按钮停止跟踪器。很简单。
问题在于,在关闭并重新打开应用程序后,无法停止位置监听器(removeUpdates)。我认为这是因为在onCreate()中创建的位置管理器被绑定到位置监听器的新实例,该实例与应用程序首次关闭时在后台运行的实例不相同。
我在声明期间无法分配位置管理器,因为它需要上下文。
我的声明
LocationManager myLocMan;
LocationListener myLocList = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
//Do things
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
这是onCreate()中的相关代码:
myLocMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
startButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myLocMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, myLocList);
startButton.setEnabled(false);
stopButton.setEnabled(true);
}
});
stopButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myLocMan.removeUpdates(myLocList);
startButton.setEnabled(true);
stopButton.setEnabled(false);
}
});