美文网首页
Android framework学习指南之Launcher启动

Android framework学习指南之Launcher启动

作者: 像程序那样去思考 | 来源:发表于2023-05-05 22:02 被阅读0次

    前言

    Launcher是一个用来显示系统中已经安装的应用程序的应用程序,Launcher 在启动过程中会请求PackageManagerService 返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序,它的作用主要有两点一个是启动应用程序一个是显示和管理应用程序的快捷图标或者其他桌面组件。

    分析Launcher的启动

    启动入口在SystemServer.java的startOtherServices函数中,我们可以看到上面的注释的意思也大概是这个

    image.png

    我们点击到systemReady方法中,在第14282行发现有一个名为startHomeActivityLocked的方法被调用

    image.png

    我们点到startHomeActivityLocked方法中发现有一个getHomeIntent的调用

    image.png

    我们点进getHomeIntent方法中,发现假如mFactoryTest不为FactoryTest.FACTORY_TEST_LOW_LEVEL(低级工厂模式)会添加一个Intent.CATEGORY_HOME的Category

    image.png

    然后我们在ActivityManagerService.java的这一行加入Log打印

    image.png

    发现打印的包名是com.android.settings并不是launcher

    image.png

    然后我们在settings中的AndroidManifest.xml中发现了两个带有android.intent.category.HOME标记的Activity

    image.png

    然后我们在两个Activity中的onCreate方法中加入Log打印

    image.png image.png

    我们编译运行后发现打印的是FallbackHome

    image.png

    image.png

    我们打开FallbackHome.java,发现代码比较少,其中有一个方法是用来检测是否找到了真正的HomeActivity,我这里加了一行Toast的代码,用来显示真正的HomeActivity的包名

    image.png

    然后我们编译源码运行模拟器,我们发现显示的是launcher3(ps:由于这里我把默认的launcher改成了launcher3所以这里显示的是launcher3)


    image.png

    相关文章

      网友评论

          本文标题:Android framework学习指南之Launcher启动

          本文链接:https://www.haomeiwen.com/subject/lgmqsdtx.html