服务意图 - 它会被ActivityMonitor捕获吗?

时间:2011-11-08 13:09:57

标签: android android-intent android-service

我想监视是否在Activity中进行了startService(...)调用:

public void testShouldCallServiceOnSendButtonPress() throws Exception {
        assertNotNull(activity.pictureToSend);
        ActivityMonitor androidMock = help.mockIntent(1);
        TouchUtils.clickView(this, activity.sendButton);
        help.assertBehavior(androidMock);
    }

    public ActivityMonitor mockIntent(int numberOfExpectedIntentsSentToAndroid) {
        this.numberOfExpectedIntentsSentToAndroid = numberOfExpectedIntentsSentToAndroid;
        IntentFilter intentFilter = null;
        return androidMock = instrumentation.addMonitor(intentFilter, null, true);// catch all 
    }

上面我添加了一个catch-all监视器(应该同时捕获Activity和Service意图,对吧?!)

assertNotNull( this.startService(new Intent(this, MyService.class)) );
上面的

我验证服务是否已成功启动,并且是。

但是...... catch-all监视器永远不会被命中,instrumentation.checkMonitorHit()不是> = 1。

任何想法为什么?

1 个答案:

答案 0 :(得分:1)

查看Android源代码,似乎只有Activity.startActivity才会覆盖对Instrumentation的调用。在Activity中没有覆盖startService,因此它使用Context中的默认实现,因此它永远不会通过检测。

所以不,ActivityMonitor不会捕获服务意图。