我有这个方法,可以管理我的位置:
@Override
public void onLocationChanged(final Location location) {
if(inRun){
Clocation myLocation = new Clocation(location, this.useMetricUnits());
this.updateSpeed(myLocation);
this.updateDistance(myLocation);
this.updateAverageSpeed(this.distance, this.chronometer);
if (activity.getText().toString() != ActivityRecongnizedService.getActivity()) {
activity.setText(ActivityRecongnizedService.getActivity());
activityTimer.start();
}
switch (activity.getText().toString()) {
case "STILL": still = true; break;
case "IN VEHICLE": inVehicle = true; break;
case "ON BICYCLE": onBicycle = true; break;
case "ON FOOT": onFoot = true; break;
case "RUNNING": running = true; break;
case "WALKING": walking = true;break;
case "TILTING": tilting = true; break;
}
setTimeActivity();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String[] key;
key = user.getEmail().split("@");
reference.child("Position").child(key[0]).child("latlng").setValue(new LatLng(location.getLatitude(),location.getLongitude()));
}
}
但我希望这个方法在 MainActivity 关闭时运行。我读到了有关这件事的信息,有两种方法可以做到这一点:使用服务或使用 onStop 方法。
我更喜欢第二种方式,即onStop方法,但我不知道如何在onStop方法中调用onLocationChanged。
最佳答案
我希望这可以帮助你。
在Android中,有位置管理器,它提供对系统位置服务的访问。
您可以使用此类触发 onLocationChanged
事件。
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// Get the best provider for the criteria
Criteria criteria = new Criteria();
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String bestprovider = locationManager.getBestProvider(criteria,false);
locationManager.requestLocationUpdates(bestprovider,0, 0, this);
如果您在 onStop
方法中插入部分代码,onLocationChanged
事件将被触发。
关于java - 如何在应用程序关闭时运行 onLocationChanged 方法(使用 onStop 方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608364/