首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

ActivityManagerService启动过程分析

之前讲Android的View的绘制原理和流程的时候,讲到过在Android调用setContentView之后,Android调用了一个prepreTravle的方法,这里面就提到了ActivityManagerService...ActivityManagerService提供的主要功能:        (1)统一调度各应用程序的Activity        (2)内存管理        (3)进程管理 上一篇我们分析Android...一、ActivityManagerService 创建过程 mActivityManagerService = mSystemServiceManager.startService(             ...ActivityManagerService.Lifecycle.class).getService(); 通过SystemServiceManager这样一个模板类来创建运行在SystemServer...public ActivityManagerService(Context systemContext) {    // 1.系统Context 和 ActivityThread

91480

Android之ActivityManagerService启动详解

ActivityManagerService,简称AMS,具有管理Activity行为、控制activity的生命周期、派发消息事件、内存管理等功能,AMS的另外两个重要概念是两大核心功能是WindowManagerService.java...分析ActivityManagerService的流程之前需要先下载Android的系统源码,相关下载可以参照下面的文章:中国大陆如何下载 Android 源码 用户从Launcher程序点击应用图标可启动应用的入口...具体的,用户在Launcher程序里点击应用图标时,会通知ActivityManagerService启动应用的主Activity,ActivityManagerService发现这个应用还未启动,则会通知...应用进程接下来通知ActivityManagerService应用进程已启动,ActivityManagerService保存应用进程的一个代理对象,这样ActivityManagerService可以通过这个代理对象控制应用进程...,然后ActivityManagerService通知应用进程创建主Activity的实例,并执行它的生命周期方法,也就是诸如OnCreadte()等方法。

27220

Android源码解读-App启动过程

WX20220113-105541.png 整个应用程序的启动过程复杂,主要分为以下五个阶段: 一.Launcher通过Binder进程间通信机制通知ActivityManagerService...,它要启动一个Activity; 二.ActivityManagerService通过Binder进程间通信机制通知Launcher进入Paused状态; 三....Launcher通过Binder进程间通信机制通知ActivityManagerService,它已经准备就绪进入Paused状态,于是ActivityManagerService就创建一个新的进程,用来启动一个...Activity就是在这个ActivityThread实例中运行; 四.ActivityThread通过Binder进程间通信机制将一个ApplicationThread类型的Binder对象传递给ActivityManagerService...,以便以后ActivityManagerService能够通过这个Binder对象和它进行通信; 五.ActivityManagerService通过Binder进程间通信机制通知ActivityThread

41711

【Android 启动过程】Android 应用启动流程 | Activity 启动流程

Zygote ( 受精卵 ) 进程 , Zygote 进程会调用 system_server 进程 , system_server 进程 会拉起 PackageManagerService 进程 和 ActivityManagerService...进程 , ActivityManagerService 进程 会启动 Launcher 应用 ; Launcher 应用就是界面中显示各个应用图标的应用 , 就是 Android 的桌面应用 ; Framework...个阶段 , 以 Activity A 中启动 Activity B 为例 : 阶段 1 : Activity A 请求 Android System Service ( 系统服务 ) , 具体指的是 ActivityManagerService...ActivityThread 中的相关代码创建 Activity B ; 阶段 3 : 在应用 ActivityThread 主线程中 , 启动 Activity B 页面 ; 简要流程 : Activity A -> ActivityManagerService...Launcher 应用中启动 Activity 示例 : 在 Launcher 应用中 , 调用 startActivity() 方法启动 Activity , 首先获取 system_server 进程中的 ActivityManagerService

3.9K10

Android四大组件Broadcast中注册广播registerReceiver流程源代码详解

ActivityManagerService在收到相应的广播时,就是通过这个Binder对象来通知MainActivity来接收的。...ActivityManagerService.registerReceiver 这个函数实现在frameworks/base/services/java/com/android/server.../am/ActivityManagerService.java文件中: public final class ActivityManagerService extends ActivityManagerNative...这就是为什么叫做Sticky Intent了,这个最后发出的广播虽然被处理完了,但是仍然被粘住在ActivityManagerService中,以便下一个注册相应Action类型的广播接收器还能继承处理...接着,又把这个ReceiverList列表以receiver为Key值保存在ActivityManagerService的成员变量mRegisteredReceivers中,这些都是为了方便在收到广播时

46730

Android Framework学习(三)之SyetemServer进程启动解析

android framework进程启动流程如下: init进程 –> Zygote进程 –> SystemServer进程 –>各种应用进程 SystemServer进程主要的作用是启动各种系统服务,比如ActivityManagerService...ActivityManagerService是系统中一个非常重要的服务,Activity,service,Broadcast,contentProvider都需要通过其余系统交互。...getService() { return mService; } } 可以发现Lifecycle是ActivityManagerService是的一个静态内部类...,在其构造方法中会创建一个ActivityManagerService,通过刚刚对Installer服务的分析我们知道,SystemServiceManager的startService方法会调用服务的...的引用,所以我们可以看一下ActivityManagerService的start方法的实现: private void start() { Process.removeAllProcessGroups

36920

Android 四大组件之一:BroadCastReceiver动态注册广播流程

这就是为什么叫做Sticky Intent了,这个最后发出的广播虽然被处理完了,但是仍然被粘住在ActivityManagerService中,以便下一个注册相应Action类型的广播接收器还能继承处理...❞ 广播发送流程 ❝ 广播的发送者将广播发送到ActivityManagerServiceActivityManagerService接收到这个广播以后,就会在自己的注册中心查看有哪些广播接收器订阅了该广播...,然后把这个广播逐一发送到这些广播接收器中,但是ActivityManagerService并不等待广播接收器处理这些广播就返回了,因此,广播的发送和处理是异步的。...概括来说,广播的发送路径就是从发送者到ActivityManagerService,再从ActivityManagerService到接收者,这中间的两个过程都是通过Binder进程间通信机制来完成的...❝ 这里的mBroadcastsScheduled表示ActivityManagerService当前是不是正在处理其它广播,如果是的话,这里就先不处理直接返回了,保证所有广播串行处理。

69630

【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 )

SystemServer 进程 , SystemServer 进程就是 核心服务 所在进程 , 核心服务如 WindowsManagerService , PowerManagerService , ActivityManagerService...等系统服务 ; ActivityManagerService 服务 : 简称 AMS , 该服务由 SystemServer 启动 , 其主要功能是 控制四大组件启动和调度工作 , 控制 应用程序的管理和调度工作.../android/app/ApplicationThreadNative.java /frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java...在 Launcher 应用 ( 系统主界面 ) 中点击应用图标 , Launcher 应用会启动该 app ; Launcher 应用通过 Instrumentation 经过一系列调用 , 获取 ActivityManagerService...; 在 ActivityManagerService 中调用 start() 方法 , 首先查看要启动的应用是否已经存在 ; 如果存在 , 就直接切换到前台 ; 如果不存在 , 则调用 Process

28200

ActivityManager 讲解

接口定义了所有ActivityManager框架的操作,ActivityManagerProxy实现了接口IActivitManager,但并不真正实现这些方法,它只是一个代理类,真正动作的执行为Stub类ActivityManagerService...,ActivityManagerService对象只有一个并存在于system_process进程中,ActivityManagerService继承于ActivityManagerNative存根类。...ActivityManager存在于用户进程中,由用户进程调用获取Activity管理的一些基本信息,但是ActivityManager类并不真正执行这些操作,操作的真正执行在system_process进程中的ActivityManagerService...,ActivityManagerService作为一个服务在system_process启动时被加载,关于ActivityManagerService如何被加载这里不展开讨论,后面在讨论android系统启动时在探讨...,那么从ActivityManager到ActivityManagerService中间经过一个环节,那就是进程通信,而IActivityManager以及实现接口的代理类ActivityManagerProxy

33420
领券