在我的应用程序中,我正在使用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进行更新。 一切都很完美,但我有一个大问题:
当我打开活动效果很好时,我可以在通知栏中看到该位置的图标
如果我按下设备的主页按钮(方形按钮),我会离开应用程序,但不会关闭它。 当我重新打开我的应用程序时,继续在地图上显示和更新我的位置 这是正确的,现在出现了问题。
当我按下设备的后退按钮时,我会离开应用程序,但是当我再次打开它时,该位置不再处于活动状态(位置图标未显示在通知栏中)并且地图未更新< / 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();
}
}