Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式重新启动React本机应用程序_Android_Ios_React Native - Fatal编程技术网

Android 以编程方式重新启动React本机应用程序

Android 以编程方式重新启动React本机应用程序,android,ios,react-native,Android,Ios,React Native,是否可以在不编写任何本机代码的情况下以编程方式重新启动React本机应用程序 例如,我从对的回答中知道,我可以通过以下方式重新启动Android应用程序: Intent i = getBaseContext().getPackageManager() .getLaunchIntentForPackage( getBaseContext().getPackageName() ); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startA

是否可以在不编写任何本机代码的情况下以编程方式重新启动React本机应用程序

例如,我从对的回答中知道,我可以通过以下方式重新启动Android应用程序:

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

我可以对React Native执行同样的操作吗?

如果只想重新启动JS部分,那么可以使用。这将适用于Android和iOS

如果您想重新启动整个应用程序,目前还没有react本机软件包。如果您想自己创建,请检查以下链接

如果在编写基本JAVA代码时遇到困难,可以使用

更新:

从0.62开始,React Native添加了
DevSettings.reload()
。因此,如果您希望以编程方式重新加载,那么从现在起就不需要任何第三方软件包


除上述内容外,您还可以使用Codepush重新启动应用程序,如下所示:

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

事实上,这就是它的代码来源。

您可以像这样使用
ReactInstanceManager

final ReactInstanceManager instanceManager = getReactInstanceManager();
instanceManager.recreateReactContextInBackground();

对于iOS,React Native通过“DevSettings”公开“reload”方法

您可以执行以下操作:

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();
使用方法如下:

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

您不需要外部软件包


DevSettings.reload()
来自62+。以下是DevSettings模块的文档

如果您使用的是Expo,您也可以专门使用
Updates.reloadAsync()
。expo的
更新
API允许您通过编程控制和响应应用程序的无线更新

安装

expo安装expo更新

使用


我也想知道,对于Isif,你可以考虑使用世博会,你可以用UTIL.Read()来实现这一点。expo-reload方法已更改为
expo.Updates.reload()
您不再需要此软件包
DevSettings.reload()
来自62+。以下是DevSettings模块的文档
DevSettings模块公开了为开发中的开发人员自定义设置的方法。
这意味着,此api在productionRestarting中不起作用,但这样似乎会泄漏内存。重新启动几次,应用程序很快就会死机。还是不知道为什么。@CristianoCoelho,没错。我也注意到在我的经验中,它会泄露记忆。我不熟悉技术细节,但我相信react native restart可能也会泄漏内存,因为它是从codepush中提取的。在通过CodePush重新启动后,我们发现Android上OutOfMemoryErrors的发生率更高。虽然这是可行的,但它似乎只适用于开发构建(因此,我猜DevSettings的名称)。通过Xcode构建到设备是可行的,但是将存档上传到应用商店/试飞会在这次呼叫中崩溃。不管怎样(除了使用react native restart软件包)?这似乎也适用于Android,我不知道它是否总是这样,或者是RN更新做的,但我建议你改变你的答案-我起初没有使用它,因为我认为它只适用于iOS。这在发行版中不起作用,但在调试模式下起作用。对于发布模式有什么建议吗?对于发布模式,您可以使用React Native Restart package(第一个答案),它在发布版本中工作吗?或者只是在调试/dev build中?
DevSettings模块公开了为开发中的开发人员自定义设置的方法。