Время запуска приложения - PullRequest
2 голосов
/ 24 февраля 2010

Какой лучший способ запустить приложение и рассчитать время его запуска в Android (если это можно сделать с помощью некоторого кода, то лучше)

Ответы [ 5 ]

6 голосов
/ 24 февраля 2010

Хм - во-первых, если быть более точным, я должен отметить, что в Android вы запускаете действия, а не приложения!

Итак, поскольку ваша точка входа в ваше приложение - это действие, которое обрабатывает намерение ЗАПУСКА, вы можете интерпретировать ваш вопрос как «как измерить время запуска активности».

Для этого я предлагаю посмотреть жизненный цикл деятельности здесь: https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle.

Глядя на красивый график, вы видите, что время запуска - это, по сути, время, потраченное на onCreate(), onStart() и onResume().

Чтобы измерить это, я бы предложил использовать traceview , поскольку это действительно покажет вам во всех деталях, где вы провели свое время! Начните трассировку, используя Debug.startMethodTracing("startUp"); в начале onCreate() и завершите трассировку в конце onResume() с Debug.stopMethodTracing();.

Поскольку onCreate() вызывается только один раз за экземпляр, вам даже не нужно беспокоиться о множественных вызовах onResume() в случае, если это действие будет перенесено в фоновый режим, так как вы дважды вызовете метод stop, что без вреда!

Получайте удовольствие - мне очень нравятся возможности traceview!

1 голос
/ 10 марта 2017

Вы можете найти ответ здесь -

Эта информация по умолчанию регистрируется в Logcat для API версии 19 или выше. Ключ ищет его в нужном месте -

Если вы отслеживаете выходные данные logcat из командной строки или из терминала, найти истекшее время просто. Чтобы найти истекшее время в Android Studio, необходимо отключить фильтры в представлении logcat. Отключение фильтров необходимо, потому что системный сервер, а не само приложение, обслуживает этот журнал.

Вот пример из документации для полноты.

ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms

Выдержки из документации .

1 голос
/ 21 августа 2015

Там будет автоматический журнал что-то вроде

system_process I/ActivityManager﹕ Displayed com.android.vending/com.google.android.finsky.activities.MainActivity: +549ms

, чтобы показать время запуска приложения от пользователя, набравшего его, до приложения, готового к дальнейшему взаимодействию с пользователем. Это из ActivityManager.

Кроме того, использование журнала для измерения времени от onCreate () до onResume должно быть еще одним хорошим способом.

1 голос
/ 24 февраля 2010

Чтобы сделать это быстро, я бы использовал logcat, что-то вроде:

Log.d("tag", "starting");
/* code goes here */
Log.d("tag", "finished");

Если вы хотите сделать что-то большее, попробуйте Traceview .

0 голосов
/ 06 декабря 2013

В рамках приведенных выше ответов я хотел бы отметить, что Traceview не может предоставить реальное время, поскольку JIT отключается во время профилирования. Traceview - бесполезный инструмент для контроля времени выполнения исходного кода. (Traceview - хороший инструмент для проверки только трассировки стека, как упоминалось выше, используя класс Debug с startMethodTracing () и stopMethodTracing ()).

Я предлагаю использовать systrace (например, через плагин Eclipse), это лучший инструмент для расчета реального времени выполнения (и многих других функций).

Для получения дополнительной информации взгляните на: http://developer.android.com/tools/debugging/systrace.html

Также хочу отметить, что иногда systrace не работает (зависит от отображения FS).

Вам необходимо проверить 'system \ core \ rootdir \ init.rc' с правильным значением 'debugfs' . Должен быть таким: 'mount debugfs / sys / kernel / debug / sys / kernel / debug'

...