You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,可采用两类实现方案:
    1. 根控制器重置方案:销毁所有现有页面,重新初始化根ViewController,同时全局重新加载字体配置,无需退出应用进程,体验更流畅,优先推荐。
    2. 进程重启方案:弹出提示后调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 11:42:00