按下后退按钮后,Android Google地图活动会重新创建

时间:2016-03-23 09:45:08

标签: android google-maps

我在我的项目中使用Google Map,并在里面创建了一个包含地图片段的Activity。成功加载地图后,如果我轻扫一下并快速点击“返回”按钮(可能是地图仍在移动时),地图活动将重新加载。我跟踪了它的生命周期方法,发现它是从OnCreate方法重新启动的。有时会发生这种情况,并非总是如此。

如果我将活动的启动模式更改为" singleTask",它可以正常工作。但是,建议不要一般使用singleTask模式,基于official documentation

任何人都可以帮助解释在这个场景下发生的事情,并提供解决它的最佳方法吗?感谢。

活动的XML是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.alcatel.movetime.ui.view.map.MapActivity"
    android:clickable="true">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"
    />
</RelativeLayout>

活动也很简单:

public class MapActivity extends AppCompatActivity implements OnMapReadyCallback {

    GoogleMap map;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
        SupportMapFragment mapFragment = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        map = googleMap;
        final LatLng kidPosition = new LatLng(31.2, 121.5);
        CameraPosition target;
        target = CameraPosition.builder().target(kidPosition).zoom(14).build();
        map.animateCamera(CameraUpdateFactory.newCameraPosition(target));
    }
}

0 个答案:

没有答案