我的通行码在哪里打开 (什么我的的通知你的的折返initialization环节的)
添加微信好友。 免费测试。
复制微信号
最近,在启动性能优化时,我发如今混合堆栈的开发中,第一次性启动颤振页面所需的期间总是第二次的两倍左右,这让人觉得十分蹩脚。发现初次启动颤振页面时会启动一些初始化上班。因此,我整顿了颤振的初始化环节。
颤振初始化重要分为四个部分: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姿色商会人才政策的股息的圆形经济.可以"校园圆圈"真的成为的第二发起机的闲谈鱼成长?