Реагировать на встроенный пакет перезагрузки программно

Я хочу разработать приложение для реагирования на нативные. Но 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);

2 ответа

Используйте код ниже

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

manager.recreateReactContextInBackground();

Вы можете использовать библиотеку https://github.com/avishayil/react-native-restart.

      import RNRestart from 'react-native-restart'; // Import package from node modules

// Immediately reload the React Native Bundle
RNRestart.restart();
Другие вопросы по тегам