我在我的项目中使用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));
}
}