我正在开发我的第一个应用程序,这个应用程序有2个活动:主要活动和第二个活动。这两个活动都需要知道用户位置,所以我创建了一个这样的类(我编辑了一个“互联网”类):
public class GPSTracker extends Service implements LocationListener {
private final Context mContext;
// flag for GPS status
boolean isGPSEnabled = false;
// flag for network status
boolean isNetworkEnabled = false;
// flag for GPS status
boolean canGetLocation = false;
boolean GPSForce = false;
Location location; // location
double latitude; // latitude
double longitude; // longitude
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
protected LocationManager locationManager;
public GPSTracker(Context context, Boolean forcegps) {
this.mContext = context;
this.GPSForce = forcegps;
getLocation();
}
public Location getLocation() {
...
}
public void startUsingGPS(){
getLocation();
}
public void stopUsingGPS(){
if(locationManager != null){
locationManager.removeUpdates(GPSTracker.this);
}
canGetLocation = false;
}
public double getLatitude(){
if(location != null){
latitude = location.getLatitude();
}
return latitude;
}
public double getLongitude(){
if(location != null){
longitude = location.getLongitude();
}
return longitude;
}
public boolean canGetLocation() {
return this.canGetLocation;
}
public void showSettingsAlert(){
...
}
@Override
public void onLocationChanged(Location location) {
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
在主要活动上我在onCreate事件上创建一个基于GPSTracker的对象然后我在onStop事件上使用stopUsingGPS()来停止GPS,当用户关闭应用程序并在onResume事件上startUsingGPS()时重启GPS使用。
我的问题是我需要在第二次活动时使用GPSTracker,但是当第二次活动打开时我的代码停止了GPS(当用户退出应用程序时,当第二次活动打开时,也会调用onStop事件)。 / p>
我认为我的做法是错误的。
如何创建GPSTracker对象并执行此操作: - 仅在用户退出应用程序时停止GPS使用; - 在我需要的所有活动中使用它;
此外我想从活动中触发更改坐标,但我不知道该怎么办?
答案 0 :(得分:0)
您需要在MainActivity的onDestroy中调用stopUsingGPS()。因此,当用户完全退出您的应用时,只有GPS跟踪才会停止。每当您的活动暂停时,onStop都会被调用。因此,请在MainActivity的onDestroy中调用stopUsingGPS()方法。