Android - 当我关闭并再次打开活动时OnMyLocationChangeListener不起作用

时间:2015-06-13 12:29:51

标签: android google-maps-android-api-2 locationlistener

在我的应用程序中,我正在使用Maps API v2。 我有一个包含地图的活动:

<LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:orientation="vertical">

                <fragment
                    android:id="@+id/map"
                    android:name="com.google.android.gms.maps.SupportMapFragment"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_gravity="center" />
            </LinearLayout>

活动开始时,在地图上显示我的位置,并使用OnMyLocationChangeListener进行更新。 一切都很完美,但我有一个大问题:

当我打开活动效果很好时,我可以在通知栏中看到该位置的图标 enter image description here

如果我按下设备的主页按钮(方形按钮),我会离开应用程序,但不会关闭它。 当我重新打开我的应用程序时,继续在地图上显示和更新我的位置 这是正确的,现在出现了问题。

当我按下设备的后退按钮时,我会离开应用程序,但是当我再次打开它时,该位置不再处于活动状态(位置图标未显示在通知栏中)并且地图未更新< / p>

我尝试了很多方法,我阅读了论坛和教程,但没有成功。 我不知道是什么问题。

我很感激帮助,我很困惑。

非常感谢。

这是我活动的代码:

public class Home扩展ActionBarActivity {

        public static GoogleMap mMap;

        //...

        private void setUpMapIfNeeded() {

        if (mMap == null) {
            mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
            if (mMap != null) {
                setUpMap();
            }
        }
    }       

    private void setUpMap() {

        mMap.setMyLocationEnabled(true);

        GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
            @Override
            public void onMyLocationChange(Location location) {
                LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());

                if (ll_ubicacion_mapa.getVisibility() == View.VISIBLE) {
                    ll_ubicacion_mapa.setVisibility(View.GONE);
                } else {
                }

                mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(loc, 16.0f));

                try {
                    indicadorDePosicion.remove();
                } catch (Exception e) {
                }

                indicadorDePosicion = mMap.addMarker(new MarkerOptions()
                        .flat(true)
                        .title(getResources().getString(R.string.TXestasAqui))
                        .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher))
                        .anchor(0.5f, 0.5f)
                        .position(new LatLng(location.getLatitude(), location.getLongitude())));

            }
        };

        mMap.setOnMyLocationChangeListener(myLocationChangeListener);
    }


      @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);

        setUpMapIfNeeded();

        //...
    }


    @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();


    }

    protected void onPause() {
        super.onPause();
    }

}

0 个答案:

没有答案