Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

2019Android Framework 高频面试题总结 PDF 下载


分享到:
时间:2020-04-21 14:42来源:http://www.java1234.com 作者:小锋  侵权举报
2019Android Framework 高频面试题总结
失效链接处理
2019Android Framework 高频面试题总结

 
本站整理下载:
 
相关截图:
 
主要内容:

1. AMS 、PMS 1.AMS 概述 AMS 是系统的引导服务,应用进程的启动、切换和调度、四大组件的启动和管 理都需要 AMS 的支持。从这里可以看出 AMS 的功能会十分的繁多,当然它并不 是一个类承担这个重责,它有一些关联类,这在文章后面会讲到。AMS 的涉及 的知识点非常多,这篇文章主要会讲解 AMS 的以下几个知识点:  AMS 的启动流程。  AMS 与进程启动。  AMS 家族。 2.AMS 的启动流程 AMS 的启动是在 SyetemServer 进程中启动的,在 Android 系统启动流程(三)解 析 SyetemServer 进程启动过程这篇文章中提及过,这里从 SyetemServer 的 main 方法开始讲起: frameworks/base/services/java/com/android/server/SystemServer.java public static void main(String[] args) { new SystemServer().run(); } main 方法中只调用了 SystemServer 的 run 方法,如下所示。 frameworks/base/services/java/com/android/server/SystemServer.java private void run() { ... System.loadLibrary("android_servers");//1 ... mSystemServiceManager = new SystemServiceManager(mSystemContext);//2 LocalServices.addService(SystemServiceManager.class, mSystemServiceManager); ...try { Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "StartServices");
startBootstrapServices();//3 startCoreServices();//4 startOtherServices();//5 } catch (Throwable ex) { Slog.e("System", "******************************************"); Slog.e("System", "************ Failure starting system services", ex); throw ex; } finally { Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER); }... } 在注释 1 处加载了动态库 libandroid_servers.so。接下来在注释 2 处创建 SystemServiceManager,它会对系统的服务进行创建、启动和生命周期管理。在 注释 3 中的 startBootstrapServices 方法中用 SystemServiceManager 启动了 ActivityManagerService、PowerManagerService、PackageManagerService 等服务。 在注释 4 处的 startCoreServices 方法中则启动了 BatteryService、UsageStatsService 和 WebViewUpdateService。注释 5 处的 startOtherServices 方法中启动了 CameraService、AlarmManagerService、VrManagerService 等服务。这些服务的父 类均为 SystemService。从注释 3、4、5 的方法可以看出,官方把系统服务分为 了三种类型,分别是引导服务、核心服务和其他服务,其中其他服务是一些非紧 要和一些不需要立即启动的服务。系统服务总共大约有 80 多个,我们主要来查 看引导服务 AMS 是如何启动的,注释 3处的 startBootstrapServices 方法如下所示。 frameworks/base/services/java/com/android/server/SystemServer.java private void startBootstrapServices() { Installer installer = mSystemServiceManager.startService(Installer.class); // Activity manager runs the show. mActivityManagerService = mSystemServiceManager.startService( ActivityManagerService.Lifecycle.class).getService();//1 mActivityManagerService.setSystemServiceManager(mSystemServiceManager) ; mActivityManagerService.setInstaller(installer);

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐