Android源码个个击破之PackageManager

发布时间:2020-07-02 12:32:42 作者:屠夫章哥
来源:网络 阅读:1132

PackageManager是个实现类,具体的实现类是frameworks\base\core\java\android\app\ApplicationPackageManager.java   (此类是hide类,通过引用无法关联到。)


这个文件定义ApplicationPackageManager类,继承并实现了PackageManager中接口;

ApplicationPackageManager使用mPM变量,这个变量是PackageManagerService的客户端(IBinder对象),调用mPM对象中的方法,实际调用到了frameworks\base\services\java\com\android\server\pm\PackageManagerService.java文件中

的方法。


    1.ApplicationPackageManager构造

        Android源码个个击破之PackageManager

  

Android源码个个击破之PackageManager

           

       继续追溯,看看ServiceManager.getService("package"),PackageManagerService在哪里添加的呢?


     Android源码个个击破之PackageManager

        在SystemServer里调用了PackageManagerService的main方法


    Android源码个个击破之PackageManager


    2.getActivityInfo方法

Android源码个个击破之PackageManager


        其实调用的的是PackageManagerService的getActivityInfo方法


        注意“mActivities.mActivities.get(component);”这里的mActivities重复写了一下,应该是网站的bug,实际代码应该是“mActivities.get(component);”

        

Android源码个个击破之PackageManager


        mActivities是在scanPackageDirtyLI这个方法里填充mActivities的

Android源码个个击破之PackageManager


       最终这个方法是通过 PackageManagerService的构造方法里调用。

    




推荐阅读:
  1. Android源码个个击破之-多媒体扫描
  2. Android源码个个击破之拨号源码

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android 源码 age roi

上一篇:开发人员学Linux(14):CentOS7安装配置大数据平台Hadoop2.9.0

下一篇:2.前言(cocos2d-x环境搭建 android篇)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》