2

Я делаю тесты с использованием пользовательского интерфейса UI automator FW. Я пытаюсь обнаружить утечку памяти при изменении ориентации устройства с помощью следующего кода:Применяется изменение ориентации ожидания пользовательского интерфейса UI

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

Это меняет ориентацию устройства, но мои вопросы это:

Что такое правильный способ (кроме сна) ждать, что устройство законченного изменение ориентации?

Я пробовал:

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

Иногда работает, иногда нет.

mDevice.waitForIdle(); 

Не работает вообще.

Любые другие способы ожидания?

ответ

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); 

Это делает фактическое ожидание, если перезапуск требуется больше, чем ожидалось, но до сих пор не 100% правильное ожидание.

Кто знает, что лучше ответить?

1

Не могли бы вы использовать нижеприведенный код? Я думаю, что это сработало.

mDevice.waitForWindowUpdate(null, 5000); 
+0

Я пробовал, но кажется, что он всегда ждет 5000 мс. Мое решение работает быстрее, но не пропускает ориентации. – vadimvolk

+0

Просто имейте в виду, что если имя пакета не совпадает, оно будет возвращено немедленно (как указано в API). Поэтому вместо «null» вы должны использовать имя пакета своей активности. Он может все еще ждать обновления окна. Поэтому, если у вас нет других источников обновлений, это может сработать (по крайней мере, для меня). –

 Смежные вопросы

  • Нет связанных вопросов^_^