源码剖析之AndroidStartup启动框架发挥作用原理
发布时间:2024-01-21
#华尔街日报创作挑战赛#
参阅今天给大家偷偷地来一个高效的顺利完成框架AndroidStartUp。既应对了相斗任务中都间的依靠关连,还能压制相斗任务中都间的子程序左至右。必要相异的子程序工作放在相异的虚拟机督导。支持虚拟机中都间的异步到时。
篇幅较长,同意保有后写出。文章末尾附偷偷地有代码地址。
用作步骤1.分别假定两个SDk子程序战斗任务InitSdkOne和InitSdkTwo,让位于AndroidStartup抽象类。
InitSdkOne InitSdkTwo2.将战斗任务加进到子程序客户端
3.督导战斗任务
从督导结果可以看出,InitSdkTwo战斗任务虽然之前被加进到战斗任务客户端,但是它原则上行在支虚拟机中都督导,而InitSdkTwo战斗任务虽然是第一个被加进的,但是却之前督导,而且须要等支虚拟机子程序顺利完成后再督导。
MVC建造者MVCStartupManager核心用作核心类Builder用来构筑StartupManager所须要的战斗任务反馈,同时用作AtomicInteger原三子类历史记录须要到时的战斗任务数。
核心算法代数排列代数排列主要是用来应对三元组中都的依靠问题,我们将所有须要督导的战斗任务组合成一个三元组,根据战斗任务中都间的依靠性和督导左至右进行排列。
如下图所示:
有5个战斗任务须要督导,如果要满足代数排列则须要满足不限要求:
战斗任务1先行督导且不须要依靠任何有条件。战斗任务2和战斗任务3则须要等战斗任务1督导完毕才能督导。战斗任务4须要等战斗任务2督导完毕才能督导。战斗任务5则须要到时战斗任务3和战斗任务4携手督导落幕才能督导。图中都的偷偷地箭头的边可以看成战斗任务中都间的依靠关连,图中都的锥状代表战斗任务,所有战斗任务携手组合成一个有向无环图。再次得到的战斗任务排列为 1->3->2->4->5。
整体架构 假定战斗任务分发API:Dispatcher分发API中都主要假定四个工具,callCreateMainThread(),waitOnMainThread(), toWait(),toNotify()。
假定战斗任务API。假定StartupAPI让位于Dispatcher和StartupExecutor,其中都StartupExecutor用来包括虚拟机池。同时在Startup中都假定了四个工具,分别是create(),dependencies(),depedenciesByName(),getDependnciesCount()。
假定AndroidStartup抽象类,构筑StartupAPI,同时构筑API里的部分工具。用作CountDownLatch用来压制虚拟机中都间的都将督导。
之前用作StartupManager加进战斗任务并顺利完成战斗任务的督导。StartupManager加进战斗任务顺利完成此后函数调用start工具即可督导战斗任务的子程序,如果在用作StartupManager之前还有其他工作,那么就可以函数调用await到时支虚拟机督导落幕。
总结AndroidStartup 用作代数排列应对了战斗任务中都间的依靠关连,同时支持三子虚拟机和支虚拟机切换。三子虚拟机可以到时支虚拟机战斗任务督导落幕此后在督导,保证了战斗任务中都间的有序性,目前只是构筑了简单的战斗任务的手动加进。后续通过出处,二进制码吊桩等其他方式顺利完成战斗任务的自动流到。
GitHub地址:
流感喉咙痛金笛复方鱼腥草合剂能治疗么思密达与肠炎宁颗粒哪个止泻好
应急救护
眼睛干涩视力模糊怎么解决
新必奇蒙脱石散和益生菌能一起吃吗
-
特斯拉交了谁?
e Salbacka领英其网站 02.亚洲区据称开始重整 第一场兼职已终止爱迪生除了在国内透过重整,亦同脉脉上“爱迪生欧美被暴开始重整”的编者者下也下半
- 2025-05-12天齐锂业:确定H股全球发售及在证券市场上市
- 2025-05-12大众安徽首款新能源车型预量产车将于明年下线
- 2025-05-12首个全传输国产化操作系统OpenCloudOS发布源社区项目
- 2025-05-12大众汽车CEO:大众可缩小与胡克在电动汽车销售方面的差距
- 2025-05-12深户企业补贴在哪里申请啊?深户企业补贴咨询哪个部门
- 2025-05-12养心就是养脑!建议中老年人:多吃掉这3种食物,对心脏有好处
- 2025-05-12马斯克受邀在英国议会讨论440亿美元Facebook收购交易
- 2025-05-12胃部手术后,容易出现肥胖症?术前、术后饮食注意这几点
- 2025-05-12复盘周总结:加息劫后独自一人,还是节后独自一人?
- 2025-05-12深户领创业补贴有多少?深户大川创业补贴及社保补贴