安卓UI Automator等待方向变化应用

3

我正在使用Android UI automator FW做测试。我试图使用以下代码在设备方向更改期间检测内存泄漏:

InstrumentationRegistry.getInstrumentation().getUiAutomation()
                            .setRotation(orientation);

它改变了设备的方向,但我的问题是:

除了等待(除了使用sleep),有什么正常的方法可以等待设备完成方向更改?

我已经尝试过:

mDevice.wait(Until.hasObject(By.pkg(<MyPackage>).depth(0)), LAUNCH_TIMEOUT);

有时工作,有时不工作。
mDevice.waitForIdle();

完全不起作用。

还有其他等待的方法吗?

3个回答

4

2

看起来像:

mDevice.wait(Until.hasObject(By.pkg(<MyPackage>).depth(0)), LAUNCH_TIMEOUT);

如果太早执行,会等待失败,所以我这样做:

SystemClock.sleep(500); // minimal activity restart time is about 300ms
mDevice.wait(Until.hasObject(By.pkg(<MyPackage>).depth(0)), LAUNCH_TIMEOUT);

如果重新启动需要的时间超过预期,实际等待时间仍然不太适当。

谁知道更好的答案?


1

你能使用下面的代码吗?我认为它看起来是有效的。

mDevice.waitForWindowUpdate(null, 5000);

我已经尝试过了,但似乎它总是等待5000毫秒。我的解决方案运行更快,但不会跳过方向。 - vadimvolk
请记住,如果数据包名称不同,它将立即返回(如API中所述)。因此,您应该使用活动的数据包名称,而不是“null”。它可能仍在等待窗口更新。因此,除非您有其他更新来源,否则这可能有效(至少对我有效)。 - Tobias Reich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接