Android UI Automator 等待应用方向更改
Android UI Automator wait orientation change applied
我正在使用 Android UI automator FW 进行测试。我正在尝试使用以下代码检测设备方向更改期间的内存泄漏:
InstrumentationRegistry.getInstrumentation().getUiAutomation()
.setRotation(orientation);
它改变了设备方向,但我的问题是:
等待设备完成方向更改的正确方法是什么(睡眠除外)?
我试过:
mDevice.wait(Until.hasObject(By.pkg(<MyPackage>).depth(0)), LAUNCH_TIMEOUT);
有时工作,有时不工作。
mDevice.waitForIdle();
根本不工作。
还有其他等待方式吗?
看起来像:
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);
如果重新启动花费的时间超过预期,它会进行实际等待,但仍然不是 100% 正确等待。
谁知道更好的答案?
你可以使用下面的代码吗?我认为它似乎有效。
mDevice.waitForWindowUpdate(null, 5000);
您可以使用 UiDevice.setOrientationXXX() methods instead of UiAutomation.setRotation().
UiDevice 方法有一个内置调用 UiDevice.waitForIdle(),它将阻塞直到 UI 至少 500 毫秒没有改变。
我正在使用 Android UI automator FW 进行测试。我正在尝试使用以下代码检测设备方向更改期间的内存泄漏:
InstrumentationRegistry.getInstrumentation().getUiAutomation()
.setRotation(orientation);
它改变了设备方向,但我的问题是:
等待设备完成方向更改的正确方法是什么(睡眠除外)?
我试过:
mDevice.wait(Until.hasObject(By.pkg(<MyPackage>).depth(0)), LAUNCH_TIMEOUT);
有时工作,有时不工作。
mDevice.waitForIdle();
根本不工作。
还有其他等待方式吗?
看起来像:
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);
如果重新启动花费的时间超过预期,它会进行实际等待,但仍然不是 100% 正确等待。
谁知道更好的答案?
你可以使用下面的代码吗?我认为它似乎有效。
mDevice.waitForWindowUpdate(null, 5000);
您可以使用 UiDevice.setOrientationXXX() methods instead of UiAutomation.setRotation().
UiDevice 方法有一个内置调用 UiDevice.waitForIdle(),它将阻塞直到 UI 至少 500 毫秒没有改变。