重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
文件:/ frameworks / base / services / core / java / com / android / server / wm / WindowState.java 能看到实际上这个过程诞生了一个很重要的对象InputWindowHandle,输入窗口的句柄。
创新互联专业为企业提供文登网站建设、文登做网站、文登网站设计、文登网站制作等企业网站建设、网页设计与制作、文登企业网站模板建站服务,10年文登做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
Activity启动流程(从Launcher开始):第一阶段: Launcher通知AMS要启动新的Activity(在Launcher所在的进程执行)第二阶段:AMS先校验一下Activity的正确性,如果正确的话,会暂存一下Activity的信息。
启动者Activity向Instrumentation请求启动目标的Activity。 Instrumentation通过AMS在App进程的IBinder接口(IActivityManager)访问AMS,此时App进程会阻塞等待AMS的调用返回,采用的跨进程通信技术是AIDL。
启动Activity的消息,会回调到ActivityThread中的mH的dispatchMessage方法,可以通过给mH设置一个callBack,在callBack的handleMessage中,然后替换回真正要启动的Intent,然后返回false,让handleMessage再继续处理。
ATM启动最终调用的是ActivityTaskManagerService.Lifecycle.onStart()来启动ATM服务的 源码:ActivityTaskManagerService.java#Lifecycle.class 将ActivityTaskManagerInternal添加到本地服务的全局注册表中。
Activity的四种启动模式: standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。
:startActivity 主要就是应用进程与 system_server 进程的 AMS 通信,AMS 是实际来管理 Activity 组件的,负责处理启动模式,维护 Activity 栈等工作。
1、在 ActivityStarter. executeRequest 方法中先做一系列的检查,包括调用进程的检查、Intent的检查、权限的检查、向PKMS获取启动Activity的ActivityInfo等信息,然后调用 startActivityUnchecked 方法开始对要启动的Activity做堆栈管理。
2、前面realStartActivityLocked方法中通过addCallback,传入参数LaunchActivityItem。
3、Activity启动流程分两种,一种是启动正在运行的app的Activity,即启动子Activity。如无特殊声明默认和启动该activity的activity处于同一进程。如果有声明在一个新的进程中,则处于两个进程。
4、:startActivity 主要就是应用进程与 system_server 进程的 AMS 通信,AMS 是实际来管理 Activity 组件的,负责处理启动模式,维护 Activity 栈等工作。
5、启动Activity的消息,会回调到ActivityThread中的mH的dispatchMessage方法,可以通过给mH设置一个callBack,在callBack的handleMessage中,然后替换回真正要启动的Intent,然后返回false,让handleMessage再继续处理。
点击桌面图标后,Launcher进程访问AMS进程请求启动目标Activity,采用的跨进程方式是AIDL。2 AMS进程访问Zygote进程请求启动一个新的进程。采用的跨进程方式是Socket。3 Zygote进程通过调用fork函数创建一个App进程。
AMS主要功能: AMS是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作。还负责启动或杀死应用程序的进程。WMS主要功能: 为所有窗口分配Surface。
统一调试应用程序的Activity。应用程序要运行Activity,首先会报告给AmS,然后由AmS决定该Activity是否启动。内存管理。
scheduleServiceArg()方法最终通过调用handleServiceArgs()方法,回调Service.onStartCommand()方法。至此,Service的启动过程分析完毕。
(四)具体流程 Launcher:Launcher通知AMS要启动activity。startActivitySafely-startActivity-Instrumentation.execStartActivity()(AMP.startActivity)-AMS.startActivity AMS:PMS的resoveIntent验证要启动activity是否匹配。