欢迎来到天天文库
浏览记录
ID:41006049
大小:271.08 KB
页数:20页
时间:2019-08-13
《Android系统默认Home应用程序(Launcher)的启动过程源代》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应用程序就是Launcher了,本文将详细分析Launcher应用程序的启动过程。 Android系统的Home应用程序Launcher是由ActivityManagerService启动的,而ActivityManagerService和PackageManagerService一样,都是在开机时由SystemServer组件启动的,
2、SystemServer组件首先是启动ePackageManagerServic,由它来负责安装系统的应用程序,具体可以参考前面一篇文章Android应用程序安装过程源代码分析,系统中的应用程序安装好了以后,SystemServer组件接下来就要通过ActivityManagerService来启动Home应用程序Launcher了,Launcher在启动的时候便会通过PackageManagerServic把系统中已经安装好的应用程序以快捷图标的形式展示在桌面上,这样用户就可以使用这些应用程序了,整个过程如下图所示:点击查看大图
3、 下面详细分析每一个步骤。 Step1.SystemServer.main 这个函数定义在frameworks/base/services/java/com/android/server/SystemServer.java文件中,具体可以参考前面一篇文章Android应用程序安装过程源代码分析的Step1。 Step2. SystemServer.init1 这个函数是一个JNI方法,实现在 frameworks/base/services/jni/com_android_server_SystemServ
4、er.cpp文件中,具体可以参考前面一篇文章Android应用程序安装过程源代码分析的Step2。 Step3. libsystem_server.system_init 函数system_init实现在libsystem_server库中,源代码位于frameworks/base/cmds/system_server/library/system_init.cpp文件中,具体可以参考前面一篇文章Android应用程序安装过程源代码分析的Step3。 Step4. AndroidRuntime.callStatic
5、 这个函数定义在frameworks/base/core/jni/AndroidRuntime.cpp文件中,具体可以参考前面一篇文章Android应用程序安装过程源代码分析的Step4。 Step5. SystemServer.init2 这个函数定义在frameworks/base/services/java/com/android/server/SystemServer.java文件中,具体可以参考前面一篇文章Android应用程序安装过程源代码分析的Step5。 Step6. ServerThrea
6、d.run 这个函数定义在frameworks/base/services/java/com/android/server/SystemServer.java文件中,具体可以参考前面一篇文章Android应用程序安装过程源代码分析的Step6。 Step7.ActivityManagerService.main 这个函数定义在frameworks/base/services/java/com/android/server/am/ActivityManagerServcie.java文件中:viewplain1.pu
7、blic final class ActivityManagerService extends ActivityManagerNative 2. implements Watchdog.Monitor, BatteryStatsImpl.BatteryCallback { 3. ...... 4. 5. public static final Context main(int factoryTest) { 6. AThread thr = new AThread(); 7.
8、 thr.start(); 8. 9. synchronized (thr) { 10. while (thr.mService == null) {
此文档下载收益归作者所有