java - 如何在应用程序关闭时运行 onLocationChanged 方法(使用 onStop 方法)

标签 java android locationlistener

我有这个方法,可以管理我的位置:

 @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/

相关文章:

java - 如何编写不需要try/catch的异常?

android - 从 LocationManager 取消订阅 LocationListener

android - Eclipse 中覆盖注释的错误

java - Android MediaPlayer 在 Nougat 中不工作

java - 如何处理 Android 中的 3 个硬键

android - GPS 位置始终显示为 0.0、0.0(已实现 LocationListener)

android - 如何在我使用 Google map 从当前位置开始移动时绘制路径

c# - 如何避免依赖注入(inject)构造函数的疯狂?

java - 重定向退回邮件,并从退回邮件中读取附件名

java - 如何在 Java 和 Android 中从 JSON 读取想要的数据