簡體   English   中英

以編程方式響應本機重新加載包

[英]React native reload bundle programmatically

我想開發一個反應本機應用程序。 但是js文件不在我的本地機器上。 我將從遠程服務器下載捆綁包。

下面的代碼現在適用。 但是如何從文件路徑重新加載js bundle?

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);

使用以下代碼

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

manager.recreateReactContextInBackground();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM