android.app.instrumentation

什么是Instrumentation?

Instrumentation是执行application instrumentation代码的基类。当应用程序运行的时候instrumentation处于开启,Instrumentation将在任何应用程序运行前初始化,可以通过它监测系统与应用程序之间的交互。Instrumentation implementation通过的AndroidManifest.xml中的<instrumentation>标签进行描述。

Instrumentation似乎有些类似与window中的“钩子(Hook)函数”,在系统与应用程序之间安装了个“窃听器”。

android.app包中Instrumentation类结构,如下图所示

instrumentation

 

其包含有2个内部类:ActivityMoniter、ActivityResult

  • ActivityMoniter:有关特定的Intent的监视。一个ActivityMoniter类的实例通过函数addMonitor(Instrumentation.ActivityMonitor)添加到当前instrumentation中,一旦添加后,每当启动一个新的Activity,ActivityMoniter就会检测,如果匹配,其hit count计数更新等其他操作。 一个ActivityMonitor也可以用来寻找一个Activity,通过waitForActivity()方法,这个函数将返直到匹配的活动被创建。
  • ActivityResult:一个活动执行的结果说明,返回到原来的活动。

然后我们看下Instrumentation类的函数,列举其主要函数如下:

添加、删除ActivityMoniter;

 

Application、Activity的创建与生命周期的控制;

 

控制Instrumentation的运行;

 

发送按键、滚动球等事件消息到当前窗口;

 

同步方面的操作;

  1. 创建一个Activity直到Activity开始运行;
  2. 在主线程中执行一个调用,主线程被阻滞直到调用结束 ;
  3. 当主线程空闲的时候(没有消息等待处理)执行一个调用;
  4. 同步等待主线程处于空闲期

 

文章来源:http://www.moandroid.com/?p=1246

 

 

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.intenttest, PID: 8155 android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.intenttest/com.example.intenttest.MyActivity}; have you declared this activity in your AndroidManifest.xml? at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2049) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1709) at android.app.Activity.startActivityForResult(Activity.java:5192) at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:597) at android.app.Activity.startActivityForResult(Activity.java:5150) at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:583) at android.app.Activity.startActivity(Activity.java:5521) at android.app.Activity.startActivity(Activity.java:5489) at com.example.intenttest.MainActivity$2.onClick(MainActivity.java:60) at android.view.View.performClick(View.java:7125) at android.view.View.performClickInternal(View.java:7102) at android.view.View.access$3500(View.java:801) at android.view.View$PerformClick.run(View.java:27336) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
05-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值