项目中初次使用ReactNative,还是处在踩坑阶段。
偶然发现,多次打开首页页面会闪,打Log发现项目中封装给React Native使用的原生组件刷新了多次。再看对象实例,发现每次刷新都属于不同实例,内存泄漏了!!!
刷新监听的事件是 com.facebook.react.bridge.LifecycleEventListener.onHostResume()。也就是页面首次加载和activity resume的时候。
ViewManager示例代码:
public class SampleViewManager extends SimpleViewManager<SampleView> {
@Override
protected SampleView createViewInstance(ThemedReactContext reactContext) {
SampleView mSampleView = new SampleView(reactContext.getCurrentActivity());
reactContext.addLifecycleEventListener(mSampleView);
mSampleView.setReactContext(reactContext);