昨天看了一下罗老师的Android应用程序的Activity启动过程简要介绍和学习计划这篇文章,来写一下读后感跟自己学习的成果
如果是点击程序的桌面图标进入到程序的时候走的流程如下
binder进程进入到ActivityManagerService,并且调用了startActivity这个借口。
ActivityManagerService通过startActivityMayWait通知ActivityStack要启动的Activity的相关信息。
这个时候ActivityManagerService通知ApplicationTheard要准备启动Activity,
ApplicationThread会通过activityPause去告诉ActivityManagerService需要启动一个新的进程。
ActivityManagerService会调用startProcessLocked去创建一个新的进程。
然后ActivityManagerService通过scheduleLaunchActivity这个方法去告诉ApplicationThread准备工作做好了。
ApplicationThread吧要启动的Activity的相关操作通过performLaunchActivity告诉ActivityThread
AcitivityThread通过ClassLoader导入相关的Activity,并将它启动起来。
从一个Activity启动另外一个Acitivty则红色的部分不参与操作,新启动的Activity本身就在原来的进程中,
这是我的理解,如果有什么错误还希望各位能够帮忙指出,谢谢。
谢谢您看到了最后。