После комментария Ромена Гая вот как я это исправил. Надеюсь, это поможет кому-нибудь еще, у кого также была эта проблема.
Я действительно пытался выяснить положение представлений до того, как они были выложены на экран, но это было совсем не очевидно. Эти строки были размещены после запуска кода инициализации, поэтому я предположил, что все было готово. Тем не менее, этот код все еще был в onCreate (); Поэкспериментировав с Thread.sleep (), я обнаружил, что макет на самом деле не завершен до тех пор, пока onCreate () полностью не завершит выполнение onResume (). И действительно, код пытался выполнить до того, как макет был размещен на экране. При добавлении кода в OnClickListener (или некоторый другой Listener) были получены правильные значения, потому что его можно было запустить только после завершения макета.
Строка ниже была предложена как правка сообщества:
, пожалуйста, используйте onWindowfocuschanged(boolean hasFocus)
Я подумал, что могу поделиться обсуждением списка рассылки Apple , с которым я недавно столкнулся.
Описанное здесь поведение - именно то, что я испытываю. Похоже, что gprof уже давно не работает на OSX.
Я обратился к Акуле, которую любезно предложил Дэйв Ригби.
Спасибо!
Использует ли ваша программа несколько потоков? Я столкнулся с этой проблемой с многопоточными программами в Linux, не уверен, будет ли у OS X такие же проблемы
Вот решение проблемы многопоточности, которое я успешно использовал в прошлом.
Как быстро ваша программа работает? Если это очень быстро, это может быть слишком быстро, чтобы профилировать. У меня была эта проблема с очень простой программой обработки текста: когда я запускал ее с моим тестовым файлом размером менее 1 КБ, она сообщала все нули в столбцах времени. Я решил эту проблему, пропустив через нее весь текст «Великого Гэтсби». Попробуйте использовать более крупный набор данных или повторите основное вычисление несколько сотен раз.
Если ваша программа завершается некорректно, данные профиля не будут записаны правильно - как завершается ваша программа?
Тем не менее, я настоятельно рекомендую использовать Shark вместо gprof - он очень прост в использовании и превосходит gprof практически во всех отношениях - и не требует от вас для перекомпиляции вашей программы.