wake-up-neo.net

Programmgesteuert eine React Native App neu starten

Ist es möglich, eine React Native-App programmgesteuert neu zu starten, ohne nativen Code zu schreiben? 

Ich weiß zum Beispiel aus der Antwort auf diese Frage , dass ich eine Android-App mit neu starten kann:

Intent i = getBaseContext().getPackageManager()
         .getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

Kann ich dasselbe mit React Native tun?

13
Adam Jakiela

Wenn Sie nur den JS-Part neu starten möchten, können Sie React Native Restart Package verwenden. Dies funktioniert sowohl für Android als auch für iOS.

Wenn Sie die gesamte Anwendung neu starten möchten, gibt es ab sofort keine reaktiven Pakete. Wenn Sie selbst erstellen möchten, klicken Sie auf den folgenden Link

Erstellen des benutzerdefinierten Android-Moduls für React Native

Wenn Sie Schwierigkeiten beim Schreiben des Java-Basiscodes haben, können Sie die Boilerplate mit React Native Create Library

14
Sriraman

Zusätzlich zu dem oben Gesagten können Sie die App mithilfe von Codepush wie folgt neu starten:

import CodePush from 'react-native-code-Push';
CodePush.restartApp();

Tatsächlich hat React Native Restart Package seinen Code erhalten.

7
Mike Martin

Für iOS stellt React Native eine "reload" -Methode über "DevSettings" zur Verfügung https://github.com/facebook/react-native/blob/75f2da23c5d557862cf4b7bcdd8a1445b54d1c31/React/Modules/ RCTDevSettings.mm # L240-L24

import { NativeModules } from "react-native";


NativeModules.DevSettings.reload();
3
Estevão Lucas

Sie können den ReactInstanceManager wie folgt verwenden

    final ReactInstanceManager instanceManager = getReactInstanceManager();
    instanceManager.recreateReactContextInBackground();
2
Mohit Goel

Sie können wie folgt vorgehen:

yarn add react-native-restart
react-native link react-native-restart

und wie folgt verwenden:

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

// Immediately reload the React Native Bundle
RNRestart.Restart();
0
sajad abbasi