Как работает журнал.wtf () отличается от Log.e ()?
Я посмотрел на документация для android.утиль.Журнал и я не уверен точно, в чем разница между Log.e()
и Log.wtf()
есть. Один предпочтительнее другого? Есть ли разница в функциональности? Конечно, они не лишние.
Примечание для будущих читателей: в то время, когда этот вопрос был задан, документация для этого была гораздо менее ясной. Если вы перейдете по ссылке выше, они исправили проблему.
6 ответов:
есть разница в тяжести;
Log.e()
просто зарегистрирует ошибку в журнале с ошибкой приоритета.
Log.wtf()
будет регистрировать ошибку с уровнем приоритета ASSERT, и может (в зависимости от конфигурации системы) отправить отчет об ошибке и немедленно завершить программу.
Log.e()
Это просто войти ошибка в журнал с приоритетом как ошибка.
Log.wtf()
(какой ужасный сбой) является более серьезным, чем журнал ошибок. Ошибки, которые никогда не когда-нибудь, когда-нибудь случилось. Это может заставить устройство удерживать для записи журналов перед завершением программы.
Как и в случае с другими типами журналов, я понимаю, что это просто еще один тип метки для сообщений журнала. бревно.я за информацию о том, где что-то происходит. бревно.e - это ошибки, которые могут произойти. бревно.wtf - это ошибки, которые никогда не случаются. Я думаю, что это просто удобство, поэтому у вас нет чего-то вроде журнала("ошибка:", "ошибка") и журнала("информация: ", "информация")
Log.wtf()
КакLog.wtf()
обычно используется для ультра-неожиданные ситуации.сначала я подумал, что это шутка, но вот она: https://developer.android.com/reference/android/util/Log.html
еще одна причина любить Android
На самом деле, это может быть ошибка документации в Android SDK, какой сюрприз... Док говорит:
ошибка всегда будет регистрироваться на уровне ASSERT со стеком вызовов.
но исходный код говорит, что это:
static int wtf(int logId, String tag, String msg, Throwable tr, boolean localStack, boolean system) { ... int bytes = printlns(logId, ERROR, tag, msg, localStack ? what : tr); ... }
Итак, Журнал.wtf () и Log.e () оба имеют одинаковый приоритет, ошибка.
разница в том, что журнал.wtf() вызывает обратный вызов onTerribleFailure (), который "сообщает о серьезной ошибке в текущем процессе. Может не вызывать завершение процесса (зависит от настроек системы)."
Итак, другими словами, Лог.ВТФ() может привести к сбою приложения.
Ниже приведен фрагмент кода:
if (ActivityManager.getService().handleApplicationWtf( mApplicationObject, tag, system, new ApplicationErrorReport.ParcelableCrashInfo(t))) { // The Activity Manager has already written us off -- now exit. Process.killProcess(Process.myPid()); System.exit(10); }