当前位置: 首页 > news >正文

网站搭建十大品牌公司徐州微网站开发公司

网站搭建十大品牌公司,徐州微网站开发公司,微信h5免费制作网站模板下载,免费模式营销案例在 Flutter 混合开发中,iOS 端的 ​​Flutter 引擎初始化时机​​ 取决于集成方式(纯 Flutter 或混合开发)。以下是详细分析: ​​1. 纯 Flutter 应用(默认 Flutter App)​​ ​​初始化时机​​ ​​启动…

在 Flutter 混合开发中,iOS 端的 ​​Flutter 引擎初始化时机​​ 取决于集成方式(纯 Flutter 或混合开发)。以下是详细分析:


​1. 纯 Flutter 应用(默认 Flutter App)​

​初始化时机​
  • ​启动即初始化​​:当应用启动时,Flutter 引擎会在 main() 函数执行前自动初始化。
  • ​调用栈​​:
    UIApplicationMain → FlutterAppDelegate → FlutterEngine 初始化 → Dart `main()` 执行
​关键代码​
  • AppDelegate​(自动生成):
     

    swift

    复制

    @UIApplicationMain
    class AppDelegate: FlutterAppDelegate {override func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {// FlutterEngine 已由父类 FlutterAppDelegate 初始化GeneratedPluginRegistrant.register(with: self) // 注册插件return super.application(application, didFinishLaunchingWithOptions: launchOptions)}
    }

​2. 混合开发(iOS Native + Flutter Module)​

​初始化方式​

开发者需 ​​手动控制​​ Flutter 引擎初始化时机,常见两种场景:

​① 提前初始化(应用启动时)​
  • ​目标​​:减少首次进入 Flutter 页面的延迟。
  • ​代码示例​​:
     

    swift

    复制

    // AppDelegate.swift
    import Flutter
    import FlutterPluginRegistrant@main
    class AppDelegate: UIResponder, UIApplicationDelegate {var flutterEngine: FlutterEngine?func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {// 提前初始化 FlutterEngineflutterEngine = FlutterEngine(name: "io.flutter")flutterEngine?.run() // 启动 Dart 虚拟机GeneratedPluginRegistrant.register(with: flutterEngine!) // 注册插件return true}
    }
​② 懒加载(首次进入 Flutter 页面时)​
  • ​目标​​:节省内存,按需加载。
  • ​代码示例​​:
     

    swift

    复制

    // FlutterViewController 加载时初始化
    class FlutterWrapperViewController: UIViewController {private var flutterEngine: FlutterEngine?override func viewDidLoad() {super.viewDidLoad()flutterEngine = FlutterEngine(name: "flutter_engine")flutterEngine?.run(withEntrypoint: nil)let flutterVC = FlutterViewController(engine: flutterEngine!, nibName: nil, bundle: nil)addChild(flutterVC)view.addSubview(flutterVC.view)flutterVC.didMove(toParent: self)}
    }

​3. 关键结论​

​场景​​初始化时机​​优点​​缺点​
​纯 Flutter 应用​应用启动时自动初始化无需手动管理无法延迟,占用内存
​混合开发(提前)​在 AppDelegate 中提前初始化减少首次进入 Flutter 页面的延迟增加启动时间,占用内存
​混合开发(懒加载)​首次打开 Flutter 页面时初始化节省内存,按需加载首次进入可能有短暂延迟

​4. 性能优化建议​

  1. ​预初始化 + 缓存引擎​

    • 在 AppDelegate 中初始化并缓存 FlutterEngine,避免重复创建:
       

      swift

      复制

      class AppDelegate: UIResponder, UIApplicationDelegate {static let sharedFlutterEngine = FlutterEngine(name: "shared_engine")func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {AppDelegate.sharedFlutterEngine.run()return true}
      }
  2. ​多引擎管理​

    • 为不同的 Flutter 页面创建独立的 FlutterEngine(隔离状态):
       

      swift

      复制

      let profileEngine = FlutterEngine(name: "profile_engine")
      profileEngine.run(withEntrypoint: "profileMain")
  3. ​插件注册优化​

    • 懒加载非必要插件:
       

      swift

      复制

      flutterEngine?.plugins.add(MyLazyPlugin()) // 按需注册

​5. 常见问题​

​Q1:Flutter 引擎初始化失败怎么办?​
  • ​检查项​​:
    • Flutter 模块是否正确集成(flutter pub get 和 pod install)。
    • 确保 FlutterEngine.run() 调用在 ​​主线程​​ 执行。
​Q2:如何监听引擎初始化完成?​
  • 通过 FlutterEngine 的 binaryMessenger 属性判断:
     

    swift

    复制

    if flutterEngine?.binaryMessenger != nil {print("引擎已就绪")
    }
​Q3:引擎初始化耗时多久?​
  • ​实测数据​​(iPhone 13, Release 模式):
    • 冷启动:~200ms(首次初始化)。
    • 热复用:~10ms(已缓存引擎)。

​总结​

  • ​纯 Flutter 应用​​:引擎自动初始化,无需干预。
  • ​混合开发​​:根据需求选择 ​​提前初始化​​(优化体验)或 ​​懒加载​​(节省资源)。
  • ​最佳实践​​:预初始化 + 缓存引擎,平衡性能与内存占用。
http://www.dtcms.com/a/527037.html

相关文章:

  • 中国建设机械教育协会网站泸州北京网站建设
  • 主机做网站服务器吗网站模板大全下载
  • 自媒体可做外链网站wordpress生成微信分享图片不显示
  • 一流的聊城做网站费用南宁公司注册
  • 免费做网站网站有人哪些织梦5.7转wordpress
  • 网页站点不安全应用软件设计过程
  • 莱西网站网站建设asp网站会员注册不了
  • 站长工具黄js做网站登录框验证码
  • 网络营销和推广的方法重庆网站免费优化
  • 网站多语言切换html如果制作一个内容多的网站
  • 专做装修的网站化妆品网站后台
  • 河南省住房和城乡建设门户网站seo营销是指
  • wordpress 对联广告有实力的网站排名优化软件
  • 做的比较好的网站山东建设网站首页
  • 品牌网站设计方案国家大事新闻近三天
  • 多图片网站优化丰都网站建设报价
  • 网站推广策划思维导图lol网站怎么做
  • 建一个类似淘宝的网站需要多少钱产品推广图片
  • 自助个人免费网站专业的高端网站制作公司
  • 做网站找我图片怎么制作网址
  • 网站开发职业访谈传奇怎么做充值网站
  • 国外有什么优秀的网站推荐wordpress保存图片插件
  • 网站开发证书是什么网站经营性备案需要什么资料
  • 企业网站的cms乔拓云网微信小程序制作收费吗
  • 网站怎么做微信接口全国十大物联网平台公司
  • 国外 电子 商务 网站 欣赏怎样解析网站域名
  • 湛江市律师网站建设品牌传奇做网站空间
  • 生成手机版网站金湖做网站
  • 宝塔面板怎么做网站东莞外贸优化公司
  • 十大不收费看盘软件网站苏州互联网公司集中在哪里