我已经检查了很多其他问题,但没有一个解决方案有效,我没有使用googleMap.setMyLocationEnabled(true),所以这不是问题所在。
我正在加载MapView的适配器位于此处。
@Override
public void onMapReady(GoogleMap googleMap) {
//TODO: Allow user to update this 1-normal 2-satellite 3-Terrain
MapsInitializer.initialize(mContext);
gMap = googleMap;
gMap.getUiSettings().setAllGesturesEnabled(false);
googleMap.setMapType(1);
googleMap.getUiSettings().setMapToolbarEnabled(false);
// If we have map data, update the map content.
if (mMapLocation != null) {
updateMapContents();
}
}
地图加载良好,功能正常,只是方向改变后出现了内存不足错误。
以下是LeakCanary的输出:
在me.calebjones.spacelaunchnow.debug中:1.0.0-debug:28。*me.calebjones.spacelaunchnow.MainActivity已泄漏:*GC ROOT映射.dz.af$a.f*参考地图.dz.af.k*参考maps.dg.p.mParent*引用android.widget.FrameLayout.mParent*引用com.google.android.gms.maps.MapView.mContext*泄漏me.calebjones.spacelaunchnow.MainActivity实例
- 保留:2.3 KB
- 参考编号:9007ff6a-0072-49ce-b8cc-afc17cb19a76
- 设备:摩托罗拉谷歌Nexus 6 shamu
- 安卓版本:6.0.1 API:23 LeakCanary:1.4-beta1 02804f3
- 持续时间:watch=5791ms,gc=156ms,heap-dump=11974ms,analysis=85902ms
ViewHolder中有GoogleMap。您应该覆盖ViewRecycled上的方法并清理内存:
@Override
public void onViewRecycled(FriendViewHolder holder) {
if (holder.gMap != null) {
holder.gMap.clear();
holder.gMap.setMapType(GoogleMap.MAP_TYPE_NONE);
}
}
您是否尝试将其添加到活动标记中的清单中?
android:configChanges="orientation|screenSize"