Flutter开发中如何通过点击按钮实现应用重启功能
应用一键重启实现方案
优先推荐使用重置根组件/页面栈的方案实现配置热生效,无需杀进程,用户体验更好,只有迫不得已的场景才使用杀进程重启的方案。
原生Android端
- 调用系统API完成进程重启:
// Kotlin 实现代码 val intent = packageManager.getLaunchIntentForPackage(packageName) val componentName = intent!!.component val restartIntent = Intent.makeRestartActivityTask(componentName) startActivity(restartIntent) Runtime.getRuntime().exit(0) - 如需保留重启前的页面状态,可提前将状态存入
SharedPreferences或本地缓存,重启后读取恢复即可。
原生iOS端
- iOS没有官方公开的应用重启API,可采用两类实现方案:
- 根控制器重置方案:销毁所有现有页面,重新初始化根ViewController,同时全局重新加载字体配置,无需退出应用进程,体验更流畅,优先推荐。
- 进程重启方案:弹出提示后调用
exit(0)退出进程,引导用户手动重新打开应用:
// Objective-C 实现代码 UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"字体设置已更新" message:@"需要重启应用生效" preferredStyle:UIAlertControllerStyleAlert]; [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { exit(0); }]]; [self presentViewController:alert animated:YES completion:nil];
跨端框架实现
Flutter
- 用
RestartWidget包裹根组件,点击重启按钮时触发重置即可全局刷新配置,无需退出进程:// 主入口包裹根组件 void main() { runApp(RestartWidget(child: MyApp())); } // 按钮点击事件中调用 RestartWidget.restartApp(context);
React Native
- 可自定义实现导航栈全量销毁,重新加载App根组件,同时全局重新赋值字体配置即可完成刷新,无需重启进程。
桌面端应用
Windows端(C#为例)
// 重启当前应用进程 System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location); Application.Current.Shutdown();
Mac端
- 调用
Process类重新打开当前应用包后关闭当前进程即可。
重要提示:如果应用存在未保存的用户数据,重启前必须弹出二次确认弹窗,避免用户数据丢失。
内容的提问来源于stack exchange,提问作者user14742245
相关产品推荐
相关产品推荐

