在Android应用程序中加载Google地图太慢
在我的Android应用程序中,我有一个带有按钮的片段。单击按钮后,我将加载另一个带有MapView的片段。这一切都很好,但问题是,一旦点击上一个片段的按钮,谷歌地图的片段至少要持续0.5秒才能启动。你知道另一种不用阻塞片段事务就能加载谷歌地图的方法吗 下面是加载谷歌地图的片段在Android应用程序中加载Google地图太慢,android,google-maps,maps,fragment,Android,Google Maps,Maps,Fragment,在我的Android应用程序中,我有一个带有按钮的片段。单击按钮后,我将加载另一个带有MapView的片段。这一切都很好,但问题是,一旦点击上一个片段的按钮,谷歌地图的片段至少要持续0.5秒才能启动。你知道另一种不用阻塞片段事务就能加载谷歌地图的方法吗 下面是加载谷歌地图的片段 public class DetalleRuta extends android.support.v4.app.Fragment { private GoogleMap googleMap; private MapVi
public class DetalleRuta extends android.support.v4.app.Fragment {
private GoogleMap googleMap;
private MapView mapView;
public DetalleRuta() {
// Required empty public constructor
}
@Override
public void onResume() {
mapView.onResume();
super.onResume();
}
@Override
public void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_detalle_ruta, container, false);
//Inicio el mapa
mapView = (MapView)v.findViewById(R.id.mapa);
mapView.onCreate(savedInstanceState);
googleMap = mapView.getMap();
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
return v;
}
}
也许我的智能手机不够好,它是BQ aquaris E4。你正在同步加载地图,尝试异步加载,谷歌地图有一个地图就绪回调,你可以使用
import com.google.android.gms.maps.*;
import com.google.android.gms.maps.model.*;
import android.app.Activity;
import android.os.Bundle;
public class MapPane extends Activity implements OnMapReadyCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_activity);
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
LatLng sydney = new LatLng(-33.867, 151.206);
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 13));
}
}
添加生命周期方法和调用mapView的生命周期方法对我很有用
@Override
protected void onResume() {
mMapView.onResume();
super.onResume();
}
@Override
protected void onPause() {
mMapView.onPause();
super.onPause();
}
@Override
protected void onDestroy() {
mMapView.onDestroy();
super.onDestroy();
}
@Override
public void onLowMemory() {
mMapView.onLowMemory();
super.onLowMemory();
}
你的智能手机是罪魁祸首。尝试在其他设备上测试你的应用程序。好的,谢谢你的快速回复。我已经按照你告诉我的方式加载了,现在似乎更快了。我接受你的回答。非常感谢你。