Во-первых: вы не можете получить к нему доступ, потому что это личное.
Почему это личное?
Как вы сказали, прямой доступ к участникам быстрее. С другой стороны, вы вызываете метод, который не очень быстрый, так как он будет искать некоторые представления в иерархии представлений. Поэтому использование метода вместо прямого доступа потребует небольших накладных расходов в процентах от общего времени, которое потребуется для выполнения этой задачи.
В любом случае, я считаю, что причиной этого является инкапсуляция.
Вы вызываете то, что вам не не принадлежит (то есть Android SDK). Таким образом, вы не должны делать какие-либо предположения о том, что происходит "на другой стороне". Просто используйте этот метод и ожидайте, что он вернет желаемое представление (или ноль, если он не существует).
Возможно, следующая версия Android будет использовать другой метод для поиска представления, не вызывая getWindow()
. Если вы используете этот метод, они (Google / Android) могут просто пометить метод как устаревший и «перенаправить» ваш вызов в новейшую реализацию. Если бы вы звонили напрямую getWindow()
, возможно, вы бы искали что-то, чего там больше нет.