web-dev-qa-db-ja.com

プログラムでReactネイティブアプリを再起動する

Reactネイティブコードを作成せずにネイティブアプリをプログラムで再起動することは可能ですか?

たとえば、 この質問 への回答から、Androidアプリを次のように再起動できることを知っています。

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

React Nativeでも同じことができますか?

21
Adam Jakiela

JSパーツのみを再起動する場合は、 React Native Restart Package を使用できます。これはAndroidとiOSの両方で動作します。

アプリケーション全体を再起動する場合、現時点ではネイティブパッケージに対応していません。自分で作成したい場合は、次のリンクを確認してください

カスタムのビルドAndroidのモジュールReact Native

ベースJavaコードを書くのが難しい場合は、 React Native Create Library を使用してボイラープレートを生成できます。

22
Sriraman

上記の内容に加えて、次のようにCodepushを使用してアプリを再起動できます。

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

実際、それは React Native Restart Package がコードを取得した場所です。

11
Mike Martin

このようにReactInstanceManagerを使用できます

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

IOSの場合、React Nativeは、「DevSettings」を介して「reload」メソッドを公開します https://github.com/facebook/react-native/blob/75f2da23c5d557862cf4b7bcdd8a14​​45b54d1c31/React/Modules/ RCTDevSettings.mm#L240-L24

import { NativeModules } from "react-native";


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

次のようにできます:

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

そして次のように使用します:

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

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