关于Flutter初始化,我必须告诉你的是...(干货)

本文详细探讨了Flutter初始化的四个主要部分:FlutterMain、FlutterNativeView、FlutterView和Flutter Bundle的初始化。通过源码分析,揭示了每个阶段的主要任务,如创建PlatformViewAndroid、设置线程优先级、初始化Surface等。通过前置关键初始化工作,可以显著减少首次启动Flutter页面的耗时,达到性能优化的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

◆◆引言◆◆

最近在做性能优化的时候发现,在混合栈开发中,第一次启动Flutter页面的耗时总会是第二次启动Flutter页面耗时的两倍左右,这样给人感觉很不好。分析发现第一次启动Flutter页面会做一些初始化工作,借此,我梳理了下Flutter的初始化流程。


◆◆Flutter初始化时序◆◆

Flutter初始化主要分四部分,FlutterMain初始化、FlutterNativeView的初始化、FlutterView初始化和Flutter Bundle初始化。 我们先看下Flutter初始化的时序图,来整体把握下Flutter初始化的一般流程:

640?wx_fmt=jpeg

◆◆具体分析◆◆

FlutterMain初始化

这部分初始化工作是由Application.onCreate方法中调用开始的,在Application创建的时候就会初始化完成,不会影响Flutter页面的第一次启动,所以这里只是做一个简单分析。
从FlutterMain.startInitialization方法代码中可以轻易看出来,初始化主要分四部分。
前面三部分比较类似,分别是初始化配置信息、初始化AOT编译和初始化资源,最后一部分则是加载Flutter的Native环境。
这部分感兴趣的同学可以看下FlutterMain.java源码,逻辑还是比较清晰的。

public static void startInitialization(Context applicationContext, Settings settings) {	
    // other codes ...	
	
    initConfig(applicationContext);	
    initAot(applicationContext);	
    initResources(applicationContext);	
    System.loadLibrary("flutter");	
	
    // other codes ...	
}

FlutterNativeView初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值