起点:
研究设置字体大小的实现
mCurConfig.fontScale = Float.parseFloat(objValue.toString()); ActivityManagerNative.getDefault().updatePersistentConfiguration(mCurConfig);
开始分析:
IActivityManager 定义的接口。
ActivityManagerNative extends Binder implements IActivityManager
ActivityManagerService extends ActivityManagerNative
系统源码在使用的时候往往是:
ActivityManagerNative.getDefault()这样。
源码:
static public IActivityManager getDefault() {
return gDefault.get();
}
private static final Singleton<IActivityManager> gDefault = new Singleton<IActivityManager>() {
protected IActivityManager create() {
//别忘记service是IBinder的子
IBinder b = ServiceManager.getService("activity");
if (false) {
Log.v("ActivityManager", "default service binder = " + b);
}
IActivityManager am = asInterface(b);
if (false) {
Log.v("ActivityManager", "default service = " + am);
}
return am;
}
};
返回的是ActivityManagerProxy的实例,
它只是一个代理类,这个代理类实际上代理的是IBinder b = ServiceManager.getService("activity")这个Service。
就是说,实现主要在ActivityManagerService。
- 这个Service是什么时候添加进来的呢?
在SystemServer.java的run()中
ActivityManagerService.setSystemProcess()中
ServiceManager.addService("activity", m);
。。。还许多系统服务。
所以ActivityManagerNative.getDefault().updatePersistentConfiguration(mCurConfig)调用的是ActivityManagerService.java的updatePersistentConfiguration。
分享到:
相关推荐
在`ActivityManagerNative`中,定义了与`ActivityManagerService`交互的远程接口;`ActivityStackSupervisor`是任务和Activity栈的高级管理者,负责策略制定;而`ActivityStack`则负责具体执行任务操作。 7. **毕业...
`ContextImpl.sendBroadcast()`方法负责获取广播的MIME类型(如果已指定),并通过`ActivityManagerNative.getDefault()`获取`ActivityManagerService`的代理对象,并将广播意图发送给该服务进行进一步处理。...
3. **ActivityManagerService**:`ActivityManagerService`继承自`ActivityManagerNative`和`Binder`,实现了`IActivityManager`接口。在`ActivityManagerService`的`onTransact()`函数中,接收到客户端的请求并处理...
本项目旨在深入理解Android系统中的Activity Manager Service (AMS) 和 Package Manager Service (PMS) 的Hook机制。通过反射和动态代理技术,项目实现了对AMS和PMS的Hook操作,从而能够在运行时修改系统级组件的...
### Activity_Manager框架解析 #### 概述 在Android操作系统中,`ActivityManager`扮演着至关重要的角色,负责管理系统的各种应用程序及其组件(如Activity、Service等)。本文将深入解析`ActivityManager`框架的...
- **ActivityManagerService**: 在`ActivityManagerService.java`文件中,有处理Activity启动、停止、切换等操作的函数,如`startActivity`, `finishActivity`, `moveTaskToFront`等。这些函数会根据Android的...
Android系统内部,Activity的启动主要由ActivityManagerService完成,它是通过ActivityManagerNative接口与应用进程通信。我们可以通过反射或者AOP(面向切面编程)的方式来拦截这个过程,修改或添加额外的行为。 ...
一旦找到匹配项,就会通过AMS(ActivityManagerService)启动目标组件。 5. **Fragment的生命周期**: Fragment的生命周期包括onAttach(), onCreate(), onCreateView(), onViewCreated(), onStart(), onResume(), ...
接着这个方法会通过`ActivityManagerNative.getDefault().startService()`向系统发送请求,这里的`ActivityManagerNative.getDefault()`实际上是指向了AMS(Activity Manager Service)。 在AMS内部,`startService...
2. ActivityManagerService (AMS) - AMS是Android系统中负责管理应用程序生命周期的组件。在Activity的启动流程中,AMS负责调度Activity的创建和运行。execStartActivity方法是AMS中的一部分,它会执行一系列方法来...
4. **跨进程通信**:在`ActivityManagerNative.java`中,`ActivityManagerProxy.startActivity()`通过`IBinder.transact()`将所有数据跨进程传递给`ActivityManagerService`的`onTransact()`方法处理。这是通过...
总结来说,Android Service的启动过程涉及多个组件的交互,包括Context、ActivityManagerNative、ActivityManagerService以及应用程序进程的AppThread。理解这一过程对于深入掌握Android系统的工作原理和优化Service...
二、ActivityManagerService核心概念 1. 进程:每个应用程序在Android系统中都运行在一个独立的进程中。 2. Activity Task:一组按照特定顺序堆叠的Activity,形成一个任务。用户可以通过返回键逐个退出Activity,...
Zygote 负责建立 Java Runtime,建立虚拟机,建立 Socket 接收 ActivityManagerService 的请求,用于 Fork 应用程序。Zygote 是 Android 系统中最重要的后台程序之一。 五、系统服务 System Server System Server ...
Intent则是一种消息传递对象,用于在不同的组件之间(如Activity、Service、BroadcastReceiver)进行通信。Intent可以是显式的,即明确指定接收者,也可以是隐式的,让系统根据Intent的类别和数据来选择合适的接收者...
Zygote初始化Java运行时环境,创建虚拟机,并建立Socket监听ActivityManagerService的请求,以便Fork新的应用程序进程。同时,Zygote还会启动System Server。 5. **系统服务 (System Server)** System Server由...