我正在尝试进行测试,该测试会在更改方向后检查应用程序的行为。
for (int i = 0; i < 100; i++) {
mActivityTestRule.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Thread.sleep(3000);
mActivityTestRule.getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Thread.sleep(3000);
}
没有sleep
的速度太快-我的UI无法在下一次更改方向之前加载所有内容。
但是呢Thread.sleep看起来不好
如何更好地编写代码?我应该怎么做而不是睡不着呢?
答案 0 :(得分:0)
如果您知道如何检查UI是否已完全加载,则可以使用忙等待:
busyWaitFor(() -> isUILoaded(), 10000, 200);
busyWaitFor
的实现如下:
private static boolean busyWaitFor(BooleanSupplier condition, int timeoutMilSec, int checkIntervalMilSec) {
long startTime = System.currentTimeMillis();
boolean interrupted;
do {
if (condition.getAsBoolean()) {
return true;
}
boolean timeoutReached = System.currentTimeMillis() - startTime >= (long)timeoutMilSec;
if (timeoutReached) {
return false;
}
interrupted = sleep(checkIntervalMilSec);
} while(!interrupted);
return false;
}