Android源码分析之Instrumentation类

本文基于Android 6.0源码探讨Instrumentation类。Instrumentation用于监控Activity,其在ActivityThread的main方法中初始化,通过ActivityManagerService的attachApplication方法,涉及进程间通信,最终在ActivityThread的handleBindApplication方法中通过反射创建实例。
摘要由CSDN通过智能技术生成

说明:本文是基于Android6.0源码来分析的


  1. Instrumentation这个类,我的理解是:Instrumentation是一个用来监视Activity的监测类,Activity的生命周期的函数也是Instrumentation来调用的,那么他是再什么时候初始化的呢?
  2. 下面我们就来分析一下Instrumentation这个类的初始化时机和在什么时候会初始化

  • 我们启动一个应用的时候系统就会给我们准备一个Instrumentation的实例;开启一个app进程,会掉用ActivityThread的mian方法
public static void main(String[] args) {
       ...
    
        Process.setArgV0("<pre-initialized>");

        Looper.prepareMainLooper();

        ActivityThread thread = new ActivityThread();
        thread.attach(false);

        if (sMainThreadHandler == null) {
            sMainThreadHandler = thread.getHandler();
        }
      ...
}

接着是ActivityThread#attach方法,由于我们传进来的是false,所以走if里面的逻辑。IActivityManager是一个AIDL的接口,这里涉及到进程间通信,就不详细讲解了,网上已经有大量的文章讲解IPC了。IActivityManager的实现类就是大名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值