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构造

        

  

           

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


     

        在SystemServer里调用了PackageManagerService的main方法


   


    2.getActivityInfo方法


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


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

        


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


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

    




更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android中图片保存到本地,并及时更新到系统相册
  6. Android系统应用开发(六)Android(安卓)framework系统默认设置修改
  7. Android(安卓)Studio&源码混淆配置及其调试注意事项
  8. Android(安卓)AndroidManifest.xml配置文件
  9. Android(安卓)9.0 蓝牙配对流程

随机推荐

  1. android触摸实现物体运动方式
  2. Your project contains error(s),please f
  3. Android(安卓)startActivityForResult的
  4. ArcGIS API For Android离线地图的实现
  5. Android中有关Handler的使用(二)
  6. android Uri获取真实路径转换成File的方
  7. Android代码风格指导
  8. android利用广播和服务实现一个杀不死的
  9. Android跟软键盘的故事
  10. Android(安卓)framework Watchdog的监控