Ada*_*ela 25 android ios react-native
是否可以以编程方式重新启动React Native应用程序而无需编写任何本机代码?
例如,我从这个问题的答案中知道我可以重启Android应用程序:
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
我可以用React Native做同样的事吗?
Sri*_*man 24
如果只想重新启动JS部分,则可以使用React Native Restart Package.这适用于Android和iOS.
如果要重新启动整个应用程序,目前还没有反应原生包.如果您想自己创建,请检查以下链接
如果您在编写基本JAVA代码时遇到困难,可以使用React Native Create Library生成样板
Mik*_*tin 13
除了上面所说的,你可以使用Codepush重新启动应用程序,如下所示:
import CodePush from 'react-native-code-push';
CodePush.restartApp();
Run Code Online (Sandbox Code Playgroud)
事实上,这就是React Native Restart Package从中获取代码的地方.
Est*_*cas 12
对于 iOS,React Native 通过 "DevSettings" https://github.com/facebook/react-native/blob/75f2da23c5d557862cf4b7bcdd8a1445b54d1c31/React/Modules/RCTDevSettings.mm#L240-L24公开一个“重新加载”方法
import { NativeModules } from "react-native";
NativeModules.DevSettings.reload();
Run Code Online (Sandbox Code Playgroud)
您可以使用ReactInstanceManager这样的
final ReactInstanceManager instanceManager = getReactInstanceManager();
instanceManager.recreateReactContextInBackground();
Run Code Online (Sandbox Code Playgroud)
您可以执行以下操作:
yarn add react-native-restart
react-native link react-native-restart
Run Code Online (Sandbox Code Playgroud)
并使用如下:
import RNRestart from 'react-native-restart'; // Import package from node modules
// Immediately reload the React Native Bundle
RNRestart.Restart();
Run Code Online (Sandbox Code Playgroud)
如果您正在使用 Expo,您还可以专门使用https://docs.expo.io/versions/v38.0.0/sdk/updates/Updates.reloadAsync()作为替代方案。expo 的APIUpdates允许您以编程方式控制和响应应用程序的无线更新。
安装
expo install expo-updates
使用
import * as Updates from 'expo-updates';
...
async function reloadApp () {
await Updates.reloadAsync();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25170 次 |
| 最近记录: |