Отредактировано, чтобы добавить больше деталей:
(первоначально задавался почти два месяца назад ... до сих пор не нашел решения)
У меня есть деятельность с несколько сложным видом. Не сложно в техническом смысле ... просто много чего происходит. Все действия в этом конкретном приложении установлены на FullScreen NoTitleBar, и все они настроены на альбомную ориентацию. В начале разработки я заметил, что когда приложение скрыто, а затем возобновляет работу, нередко наблюдается тенденция к вертикальному смещению макета, как будто для освобождения места для заголовка и строки состояния.
Позже в разработке приложение теперь обращается к различным внешним намерениям. Теперь я замечаю, что существует большая тенденция к тому же сдвигу при возобновлении из уволенного извне намерения (такого как создание намерения выбора или выбор изображения). Я могу воспроизвести это непоследовательно, используя одни и те же шаги ... иногда это случается, иногда это не так. Кажется, что между различными фазами измерения и раскладки существует состояние гонки. Я предполагаю, что одним из этих шагов, которые система делает для меня, является проверка на полный экран и notitlebar, и внесение необходимого изменения. В некоторых случаях это, вероятно, происходит поздно.
Я поставил кучу журналирования и звонков на invalidate (), requestLayout () и т. Д., Пытаясь, возможно, поймать состояние гонки, но проблема кажется внешней для моих макетов. Значения top () и bottom () моего корневого макета всегда равны 0 и высоте моего экрана, соответственно, даже когда я регистрирую это во время возникновения проблемы.
Есть ли какой-либо другой метод Window, WindowManager или любого другого объекта, относящегося к системному представлению, который я могу принудительно переизмерить, перерисовать, повторно проверить флаги текущей темы / стиля?