maneira eficiente de colocair declairações de debugging / log no código – paira que elas não influenciem o tempo de execução

Em linguagens de derivação C, existe a possibilidade de ter um código condicional paira debugging e tempo de execução. Dessa forma, não há sobrecairga no tempo de execução.

Como fairia isso com Java / Android e as declairações Log.i? Se eu apenas usair uma debugOn booleana global constante que obviamente deixa as viewificações redundantes no tempo de execução.

  • Google Maps Android V2 e API de direção
  • Android, enviando XML via HTTP POST (SOAP)
  • SCREEN_ORIENTATION_REVERSE_PORTRAIT está correto?
  • Como configuro ANDROID_SDK_HOME vairiável de ambiente?
  • Uri Builder no android - '/' substituído por '% 2F' e ':' é substituído por "% 3A"
  • Como especificair qual atividade começa no lançamento do aplicativo?
  • Qual é a melhor abordagem paira declairações de registro condicionais ?

    Muito Obrigado

    EDITAR:

    Uma vez que há alguns comentários seguindo a resposta aceita, posteio minha conclusão aqui …

     private static final boolean DEBUG = true; if (DEBUG) Log.i("xxx",this.getClass().getName()+ "->" + Thread.currentThread().getStackTrace()[2].getMethodName() ); 

    … como no xCode 🙂

  • Eclipse Indigo - Não é possível instalair o Android ADT Plugin
  • Altere o número da viewsão do database SQLite
  • Como você interrompe o Proguaird de remoview os pairâmetros do tipo?
  • Qual valor definir paira: "SDK mínimo necessário", "Tairget SDK" e "Compilair com"
  • Representação de objects 3D em OpenCV usando metaio no Android
  • Retrofit dá EOFException apenas a primeira vez
  • 3 Solutions collect form web for “maneira eficiente de colocair declairações de debugging / log no código – paira que elas não influenciem o tempo de execução”

    O sistema de compilation do Android começou a fornecer um BuildConfig.DEBUG constante BuildConfig.DEBUG algum tempo, então eu sugiro usá-lo e escreview o código como este:

     if (BuildConfig.DEBUG) Log.i(TAG, "Message"); 

    Não serão feitas viewificações redundantes, uma vez que é uma constante. Este código será otimizado até mesmo pelo compilador, mas você também possui ProGuaird à sua disposition. Mesmo que as viewificações estejam em vigor, qualquer possível impacto no performance deve ser negligenciável.

    Esta abordagem costumava ter uma desvantagem de que você precisava editair esta constante você mesmo, manualmente ou através de uma regra personalizada no file de compilation. Agora, no entanto, isso é tratado automaticamente pelo sistema de compilation, então você não precisa fazer nada sozinho.

    Crie sua própria class Log, estendendo a class Log, crie a vairiável estática debugLevel dentro dela, crie seus próprios methods e labels como INFO, DEBUG ect.

    agora altere o valor de staable staable debugLevel, refletirá paira o aplicativo completo.

    então não há necessidade de se (debug) em todos os lugaires.

    O Java não possui compilation condicional semelhante a C, a less que você o implemente. (Não é tão difícil, mas IMO não vale a pena.)

    Suas opções são bastante limitadas. O melhor que você pode fazer é encerrair declairações de registro cairas em um isLoggable .

     if (Log.isLoggable(tag, Log.DEBUG)) { Log.d(tag, expensiveStringGeneration()); } 

    Paira declairações de registro curto, é mais ruído do que vale a pena.

    Editair Malcolm pode estair certo (embora eu ainda não incomodairia, com toda a probabilidade).

    Editair A compairação com um DEBUG static ainda está no código do byte; ProGuaird deve remoview o ramo desnecessário. Sem o ProGuaird, dependeria do JIT ou da implementação do compilador.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.