什么是Instrumentation?
Instrumentation是执行application instrumentation代码的基类。当应用程序运行的时候instrumentation处于开启,Instrumentation将在任何应用程序运行前初始化,可以通过它监测系统与应用程序之间的交互。Instrumentation implementation通过的AndroidManifest.xml中的<instrumentation>标签进行描述。
Instrumentation似乎有些类似与window中的“钩子(Hook)函数”,在系统与应用程序之间安装了个“窃听器”。
android.app包中Instrumentation类结构,如下图所示
其包含有2个内部类:ActivityMoniter、ActivityResult
- ActivityMoniter:有关特定的Intent的监视。一个ActivityMoniter类的实例通过函数addMonitor(Instrumentation.ActivityMonitor)添加到当前instrumentation中,一旦添加后,每当启动一个新的Activity,ActivityMoniter就会检测,如果匹配,其hit count计数更新等其他操作。 一个ActivityMonitor也可以用来寻找一个Activity,通过waitForActivity()方法,这个函数将返直到匹配的活动被创建。
- ActivityResult:一个活动执行的结果说明,返回到原来的活动。
然后我们看下Instrumentation类的函数,列举其主要函数如下:
添加、删除ActivityMoniter;
Application、Activity的创建与生命周期的控制;
控制Instrumentation的运行;
发送按键、滚动球等事件消息到当前窗口;
同步方面的操作;
- 创建一个Activity直到Activity开始运行;
- 在主线程中执行一个调用,主线程被阻滞直到调用结束 ;
- 当主线程空闲的时候(没有消息等待处理)执行一个调用;
- 同步等待主线程处于空闲期
文章来源:http://www.moandroid.com/?p=1246