React Native:是否可以在应用程序重新加载时持久保留本机Java变量值?

时间:2019-07-18 00:54:02

标签: java react-native react-native-native-module

在重新加载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());
    }

}

1 个答案:

答案 0 :(得分:0)

每次重新加载JS代码都会创建一个CustomModule重新初始化组件的新实例。我应该将组件List设置为静态类变量,以使其仅初始化一次。

public class CustomModule extends ReactContextBaseJavaModuleWithEvents implements LifecycleEventListener {

    public static List<JsonObject> components = new ArrayList<>();

}