以编程方式反应本机重新加载包

时间:2019-04-02 12:49:22

标签: android react-native react-android metro-bundler

我想开发一个React Native应用。但是js文件不在我的本地计算机上。我将从远程服务器下载捆绑软件。

下面的代码现在可以使用。但是如何从文件路径重新加载js包?

public class MainApplication extends Application implements ReactApplication {
    public static String mBundleFilePath = "sdcard/Download/index.android.bundle";

    public final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
        @Override
        public boolean getUseDeveloperSupport() {
            return BuildConfig.DEBUG;
        }

        @Override
        protected List<ReactPackage> getPackages() {
            return Arrays.<ReactPackage>asList(
              new MainReactPackage()
            );
        }

        @Override
        protected String getJSMainModuleName() {
            return "index";
        }
        @Override
        protected String getJSBundleFile() {
            return mBundleFilePath;
        }
    };

    @Override
    public ReactNativeHost getReactNativeHost() {
        return mReactNativeHost;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        SoLoader.init(this, /* native exopackage */ false);
    }
}

有一些重新加载的方法。但是它不支持外部路径。 reloadJSFromServer仅适用于http / https。

getReactNativeHost().getReactInstanceManager().getDevSupportManager().reloadJSFromServer(httpUrl);

handleReloadJS从localhost / 8081加载

getReactNativeHost().getReactInstanceManager().getDevSupportManager().handleReloadJS();

编辑

重启活动对我不起作用:)

Intent myIntent = new Intent(getApplicationContext(), MainActivity.class);
finish();
startActivity(myIntent);

1 个答案:

答案 0 :(得分:0)

使用以下代码

ReactInstanceManager manager = application.getReactNativeHost().getReactInstanceManager();

manager.recreateReactContextInBackground();