背景:
Lifecycle 主要为了解决 “生命周期管理” 的问题
现状:
使用到地图组件的时候,需要再activity里的onResume、onPause、onDestroy生命周期里,调用地图组件对应的方法,来合理的优化性能消耗。
造成的问题是,每个新业务里涉及到的使用地图组件的activity里都得需要调用,否则会造成内存泄露和地图加载问题。
优化:
Lifecycle 通过观察者模式,统一管理生命周期。
activity只需要添加这个getLifecycle().addObserver(mapView),内部对LifecycleOwner 生命周期的感知
public class MapViewManager extends FrameLayout implements LifecycleObserver {
private MapView mMapView;
public MapViewManager(@NonNull Context context) {
super(context);
init(context);
}
public MapViewManager(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public MapViewManager(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
mMapView = new MapView(context);
mMapView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
addView(mMapView);
MapShowHelper.getInstance().initMap(mMapView);
}
public MapView getMapView() {
return mMapView;
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
void onResume() {
if (mMapView != null) {
mMapView.onResume();
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
void onPause() {
if (mMapView != null) {
mMapView.onPause();
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
void onDestroy() {
if (mMapView != null) {
mMapView.onDestroy();
}
}
}