在重新加载JS时,是否可以在自定义的react native模块中维护Java变量的值?我想在下面的代码中维护components
以便进行调试。如果应用程序进入后台,它将继续存在于onHostResume上,但是在重新加载时,该值会丢失。
public class CustomModule extends ReactContextBaseJavaModuleWithEvents implements LifecycleEventListener {
public List<JsonObject> components = new ArrayList<>();
public CustomModule(ReactApplicationContext reactContext) {
super(reactContext);
reactContext.addLifecycleEventListener(this);
}
@ReactMethod
void addComponents(component) {
// add some components...
components.add(component);
}
@Override
public String getName() {
return "CustomModule";
}
@Override
public void onHostResume() {
getReactApplicationContext()
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit("DEBUG_TAG", components.toString());
}
}
答案 0 :(得分:0)
每次重新加载JS代码都会创建一个CustomModule重新初始化组件的新实例。我应该将组件List设置为静态类变量,以使其仅初始化一次。
public class CustomModule extends ReactContextBaseJavaModuleWithEvents implements LifecycleEventListener {
public static List<JsonObject> components = new ArrayList<>();
}