ActivityMonitor 被击中但 getLastActivity 返回 null

Tof*_*erJ 5 instrumentation android activity-monitor android-testing

我的测试套件中的一个测试用例有问题。我想要做的只是单击一个按钮并等待新活动启动。

ActivityMonitor monitor = getInstrumentation().addMonitor(MyActivity.class.getName(), null, false);
TouchUtils.clickView(this, searchButton);
Activity a = getInstrumentation().waitForMonitorWithTimeout(monitor, 60);
assertNotNull("The MyActivity is null.", a);
Run Code Online (Sandbox Code Playgroud)

根据文档,此代码应等待最多 60 秒以使监视器被击中。如果它被击中,活动将被返回(否则为空)。

发生的情况是,测试时不时会通过,但大多数时候它会失败,因为a == null. 我正在观察测试用例,我可以清楚地看到它没有等待 60 秒。只有一点。通过一些打印输出,我还注意到监视器实际上被击中了,但返回的活动getLastActivity()仍然是null

1)这怎么可能?

2)我可以做些什么来避免它?