什么我的的告诉你的的折返initialization过程的

频道:闲鱼技术 日期: 浏览:658
作者:闲鱼科技-然道

微信号:ccjun91
添加微信群,试用软件
复制微信号

最近,在进行性能优化时,我发现在混合堆栈的开发中,第一次启动颤振页面所需的时间总是第二次的两倍左右,这让人感觉非常糟糕。发现首次启动颤振页面时会进行一些初始化工作。因此,我整理了颤振的初始化过程。

 

颤振初始化主要分为四个部分:flitmann初始化、局部视图初始化、fratview初始化和颤振梁初始化。

让我们先看一下颤振初始化的顺序图,从整体上把握颤振初始化的一般过程:

一旦调用了创建方法,应用程序就会启动这部分初始化,并在创建应用程序时对其进行初始化,这不会影响Flatter页面的首次启动,因此这只是一个简单的分析。

来自bettemaine。淀粉法代码很容易看到,初始化主要分为四个部分。

前三部分是相似的。它们是初始化配置信息、初始化o t编译和初始化资源。最后一部分是加载颤振的出生地的环境。

对这部分感兴趣的学生可以看看bette mayne。JAV的源代码,逻辑还是比较清晰的。

首先,使用图表显示本地视图构造函数的调用堆栈:

从上图中的调用堆栈中,我们知道本地视图的初始化主要做什么。让我们从源代码的角度进行更深入的理解:

本地视图的构造函数最终调用本地攻击方法。这里我们需要分析引擎层代码。我们可以在jni文件中找到相应的jni方法调用。(具体文档包括平台、视图、android、JNI.cc)

从代码中很容易看出这是我的观点。paste方法最终调用shell::connection方法,shell::connection方法主要做两件事:

1.创建n d r o i d平台视图

2.呼叫PLA t f o r m v i e w和r o i d:a t a c h

然后让我们分析一下平台视图的构造函数和粘贴方法是什么?

其中:

1.平台视图a n d r o i d的构造函数主要调用初始化平台曲面的方法。此方法主要初始化曲面。曲面有三种类型:v u l k a n、o p e n g l和软件。

2.pla t f o r m v i w a d r o i d:这里的一个t a c h方法主要调用三种方法:c r e a t e n g i n e、s e t u p r e s o r c e n t e x t h r a d和更新读取优先级

2.1.如何创建引擎很容易理解。创建引擎时,将重新创建引擎对象。

2.2 s e t u p r s o u r c o n t e x t o n i r a d是io线程准备资源的上下文逻辑。

2.3.u p d a t h r a d p r i o r i t e s是设置线程优先级,它将g p u线程优先级设置为-2,用户界面线程优先级设置为-1

fratview的初始化是一个纯android层,因此相对简单。分析美。JAVA的构造器会发现,除了确保成功创建本地视图和一些必要的视图设置外,整个视图的初始化主要做两件事:

1.登记卸压监控,其中表面处理回调将用作颤振的第一帧回调。

2.对颤振系统中的一系列桥接方法进行了初始化。例如:定位、导航、关键事件、系统、设置、平台、文本输入

vlatview初始化过程主要如下图所示:

颤振梁的初始化由调用活动表示。从r u n f l a t e r b u n d l e开始,首先使用一个图表来说明r u n f l a t e r b u n d l e方法的调用堆栈:

让我们从源代码的角度进行更深入的理解:

颤振活动的一次创建方法将在执行该活动表示的一次创建方法后调用其r u n f l a t e r b u n d l e方法。活动代表。r u n f l a t e r b u n d l e代码如下:

很明显,这个r u n f l a t e r b u n d l e没有多大作用,它直接称之为美。r u n f r o m b u n d l e方法。之后,您将调用pla t f o r m v i w a n d r o i d:r u n b u n d l a n d s n a p s h ot方法。

[e n g i n e=e n g i n e_u->g e t w e a k p t r()

asset u provider=standard::mobile(asset u provider),

b u n d l eψpath=0/避孕套:2ψpath),e n t r y p o i n t=避孕套::移动(e n t r y p o i n t),

重用运行时控制器=重用运行时控制器]

{

如果(发动机)

引擎->运行捆绑资产(

s t d:m o v e(资产u提供商),s t d:m o v e(捆绑路径),

STD::移动(入口点),重用运行时控制器;

} ) ;

}

pla t f o r m v i e v,主引擎是:在用户界面线程中调用引擎:运行系统,调用引擎:duolun boer。

最后,dorenberg方法将只调用三种方法中的一种:RUN f r o m p r e c o m p i d s n a p s h ot、RUN f r o m k e r n e l和RUN f r o m r i p s n a p s h ot。这三种方法最终将被称为s n d s t a r t m s a g e方法。

s e n d s t a r m e s a g e方法主要做三件事:

1.获得颤振进入方法的闭合(例如主要方法)。

2.访问库

3.发送消息以调用颤振输入方法。

这一次,我们主要分析下颤振活动创建方法中颤振初始化部分的逻辑。显然,初始化三个部分主要需要时间:fl a t r n a t i v e i w、fl a t e r v i e w和颤振梁。通过预先设置这三部分的初始化工作,可以更容易地解决引言中提出的问题。经过测试发现,经过这样的改变后,颤振页面的第一次启动时间与接下来的启动时间几乎相同。

为了bettemaine。淀粉的初始化逻辑,以及s e n d s t a r t m e s a g e发送的消息最终如何调用颤振中的进入方法逻辑,尚未得到进一步分析。这些内容将在以后继续分析和分享。

短视频婴儿=慢?alibaba工程师approach短视频折返路由管理代码的如的第二.如何可以alibaba工程师解决它监测仪?(实用)1的好溶液的的帮助你实现的精确kl的细胞信息的情结数据动力源.的正确白天鹅的的modal/嵌入式的的诞生地的神经科的什么的的老实话的闲聊鱼没有供应的如何的你它?闲聊鱼的没有源的货物.的规模的闲聊市场超过本外币.第二姿色手e姿色商会人才政策的股息的圆形经济.可以"校园圆圈"真的成为的第二发动机的闲聊鱼生长?

关键词:闲鱼科闲鱼
复制成功

微信号: ccjun91
添加微信群,试用软件

我知道了
添加微信

微信号: ccjun91
添加微信群,试用软件

一键复制加过了
18749471747
微信号:ccjun91添加微信
ccjun91