首页 > 解决方案 > 生命周期 - Android Studio

问题描述

我创建了一个应用程序,正在使用谷歌地图 api,我的应用程序可以跟踪用户位置,我想做的是当我通过单击按钮打开地图屏幕并且我的应用程序跟踪用户位置但需要一些时间来跟踪用户取决于连接正确的?因此,当我的应用程序已经跟踪用户位置时,它将出现一个标记。如果我将地图屏幕更改为其他屏幕然后我回到地图屏幕它仍然显示标记而不再次跟踪或运行track function

这是我的track function

locationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
           double latitude = location.getLatitude();
            double longitude = location.getLongitude();

            LatLng latLng = new LatLng(latitude, longitude);
            if(currLocationMarker != null){
                currLocationMarker.remove();

            }
            Geocoder geocoder = new Geocoder(getApplicationContext());
            try {
                List<Address> addressList = geocoder.getFromLocation(latitude, longitude, 1);
                String str = addressList.get(0).getSubLocality()+", ";
                //str += addressList.get(0).getCountryName();
                str += addressList.get(0).getLocality();
                currLocationMarker = mMap.addMarker(new MarkerOptions().position(latLng).title(str));
                lokasisaya.setText(str);

                mMap.addCircle(new CircleOptions()
                        .center(latLng)
                        .radius(10000)
                        .strokeWidth(5)
                        .strokeColor(0x550000FF));


            } catch (IOException e) {
                e.printStackTrace();
            }

            CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(latLng.latitude, latLng.longitude)).zoom(15).build();
            mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

        @Override
        public void onProviderDisabled(String provider) {

        }
    };

标签: android

解决方案


好吧,你正在删除最后一个MarkercurrLocationMarker.remove();所以我假设你只需要维护最后一个位置。

最简单的方法是使用SharedPreferences存储最后一个位置,然后当您再次启动活动时检查该位置是否在SharedPreferences.


推荐阅读