`
dengzhangtao
  • 浏览: 678984 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IActivityManager ,ActivityManagerNative,ActivityManagerService之间如何进行工作

 
阅读更多
起点:
研究设置字体大小的实现
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。

分享到:
评论

相关推荐

    Android任务管理器源码(实用1).zip

    在`ActivityManagerNative`中,定义了与`ActivityManagerService`交互的远程接口;`ActivityStackSupervisor`是任务和Activity栈的高级管理者,负责策略制定;而`ActivityStack`则负责具体执行任务操作。 7. **毕业...

    广播分发代码走读

    `ContextImpl.sendBroadcast()`方法负责获取广播的MIME类型(如果已指定),并通过`ActivityManagerNative.getDefault()`获取`ActivityManagerService`的代理对象,并将广播意图发送给该服务进行进一步处理。...

    Activity启动流程

    3. **ActivityManagerService**:`ActivityManagerService`继承自`ActivityManagerNative`和`Binder`,实现了`IActivityManager`接口。在`ActivityManagerService`的`onTransact()`函数中,接收到客户端的请求并处理...

    基于Android框架的AMS和PMS Hook项目.zip

    本项目旨在深入理解Android系统中的Activity Manager Service (AMS) 和 Package Manager Service (PMS) 的Hook机制。通过反射和动态代理技术,项目实现了对AMS和PMS的Hook操作,从而能够在运行时修改系统级组件的...

    Activity_Manager框架解析

    ### Activity_Manager框架解析 #### 概述 在Android操作系统中,`ActivityManager`扮演着至关重要的角色,负责管理系统的各种应用程序及其组件(如Activity、Service等)。本文将深入解析`ActivityManager`框架的...

    android任务栏管理器源代码

    - **ActivityManagerService**: 在`ActivityManagerService.java`文件中,有处理Activity启动、停止、切换等操作的函数,如`startActivity`, `finishActivity`, `moveTaskToFront`等。这些函数会根据Android的...

    拦截Activity的文件

    Android系统内部,Activity的启动主要由ActivityManagerService完成,它是通过ActivityManagerNative接口与应用进程通信。我们可以通过反射或者AOP(面向切面编程)的方式来拦截这个过程,修改或添加额外的行为。 ...

    Activity通信源码

    一旦找到匹配项,就会通过AMS(ActivityManagerService)启动目标组件。 5. **Fragment的生命周期**: Fragment的生命周期包括onAttach(), onCreate(), onCreateView(), onViewCreated(), onStart(), onResume(), ...

    Android Service的启动过程分析

    接着这个方法会通过`ActivityManagerNative.getDefault().startService()`向系统发送请求,这里的`ActivityManagerNative.getDefault()`实际上是指向了AMS(Activity Manager Service)。 在AMS内部,`startService...

    Activity启动流程图

    2. ActivityManagerService (AMS) - AMS是Android系统中负责管理应用程序生命周期的组件。在Activity的启动流程中,AMS负责调度Activity的创建和运行。execStartActivity方法是AMS中的一部分,它会执行一系列方法来...

    android应用的启动流程

    4. **跨进程通信**:在`ActivityManagerNative.java`中,`ActivityManagerProxy.startActivity()`通过`IBinder.transact()`将所有数据跨进程传递给`ActivityManagerService`的`onTransact()`方法处理。这是通过...

    Android Service启动过程完整分析

    总结来说,Android Service的启动过程涉及多个组件的交互,包括Context、ActivityManagerNative、ActivityManagerService以及应用程序进程的AppThread。理解这一过程对于深入掌握Android系统的工作原理和优化Service...

    Android任务管理器源码.zip

    二、ActivityManagerService核心概念 1. 进程:每个应用程序在Android系统中都运行在一个独立的进程中。 2. Activity Task:一组按照特定顺序堆叠的Activity,形成一个任务。用户可以通过返回键逐个退出Activity,...

    Android 开机启动流程.doc

    Zygote 负责建立 Java Runtime,建立虚拟机,建立 Socket 接收 ActivityManagerService 的请求,用于 Fork 应用程序。Zygote 是 Android 系统中最重要的后台程序之一。 五、系统服务 System Server System Server ...

    Android笔记(3)---Activity和Intent

    Intent则是一种消息传递对象,用于在不同的组件之间(如Activity、Service、BroadcastReceiver)进行通信。Intent可以是显式的,即明确指定接收者,也可以是隐式的,让系统根据Intent的类别和数据来选择合适的接收者...

    Android系统启动分析.pdf

    Zygote初始化Java运行时环境,创建虚拟机,并建立Socket监听ActivityManagerService的请求,以便Fork新的应用程序进程。同时,Zygote还会启动System Server。 5. **系统服务 (System Server)** System Server由...

Global site tag (gtag.js) - Google Analytics