Я поклонник журналов отладки (в отладочных сборках), и я хочу внести некоторые улучшения в свой собственный класс регистратора. В идеале я хотел бы создать базовый метод, который регистрирует имя вызывающего класса, имя метода и значения параметров.Автоматическая регистрация в Android
Например, у меня есть приложение «MyApplication» с классом «MainActivity», и я вызываю метод «foo» с параметром «bar». Я хотел бы увидеть что-то подобное в LogCat:
D/MyApplication MainActivity foo("bar")
Есть ли способ получить эту информацию без необходимости проходить во всех этих значениях вручную? Я видел некоторые статьи, ссылающиеся на поддерживаемые Java методы, такие как java.lang.invoke.MethodHandles, но я не нашел ссылок на поддерживаемые Android методы. Я ожидаю, что параметры будут переданы, но автоматизация имени класса и имени метода будет отличной.
Спасибо @ChrisStillwell, я видел ответы, подобные этому, и должен был включить его в мой вопрос. Мой вопрос к этому - вот что представляет собой [3]? Я видел ответы с [0] и [1], но я не знаю, какой элемент отслеживания стека является надежным. – lgdroid57
'[3]' был потому, что я скопировал это из библиотеки, которую я могу использовать в своих проектах. В принципе 'getStackTrace()' возвращает массив 'StackTraceElement'. Верхняя часть массива - это верхняя часть stacktrace (то есть, где это вызвано). Если вы хотите, чтобы полная петля цикла через массив обеспечила вам полную иерархию вызовов. Точно так же, как и стек, который вы получаете, когда генерируется исключение. – ChrisStillwell
В принципе, если я выдаю исключение в строке 15 в 'SomeMethod()' stacktrace, я вижу, что он будет идентичен тому, который я могу распечатать, если бы я должен был вызвать 'Thread.currentThread(). GetStackTrace()' в строке 15 в 'SomeMethod()'. – ChrisStillwell