lo di una prueba y estoy experimentando lo mismo. Todo se reduce a este poco de la descripción en el Javadoc for TimingLogger:
Si el Log.isLoggable no está activado a por lo menos el nivel de Log.VERBOSE esa etiqueta en el momento de la creación, entonces el addSplit y la llamada dumpToLog hará nada.
Hice una prueba a nivel local:
TimingLogger timings = new TimingLogger("MyTag", "Initialization");
Log.d("MyTag", "Is Loggable? " + Log.isLoggable("MyTag", Log.VERBOSE));
timings.dumpToLog();
Y curiosamente, me sale una salida para el registro:
06-28 08:35:18.693: DEBUG/MyTag(24366): Is Loggable? false
Pero eso es todo. Y puesto que es falsa, no creo que TimingLogger está haciendo nada, basado en el TimingLogger code:
90 /**
91 * Clear and initialize a TimingLogger object that will log using
92 * the tag and label that was specified previously, either via
93 * the constructor or a call to reset(tag, label). If the
94 * Log.isLoggable is not enabled to at least the Log.VERBOSE
95 * level for that tag at creation time then the addSplit and
96 * dumpToLog call will do nothing.
97 */
98 public void reset() {
99 mDisabled = !Log.isLoggable(mTag, Log.VERBOSE);
100 if (mDisabled) return;
101 if (mSplits == null) {
102 mSplits = new ArrayList<Long>();
103 mSplitLabels = new ArrayList<String>();
104 } else {
105 mSplits.clear();
106 mSplitLabels.clear();
107 }
108 addSplit(null);
109 }
No estoy seguro de por qué Log.isLoggable vuelve falsa cuando es obvio que el registro por encima de VERBOSE, ya que mi Log.d, obviamente, registrado.
puede habilitar el registro para esa etiqueta manualmente desde el [Javadoc clase Log] [3]:
Puede cambiar el nivel de acceso predeterminado establecer una propiedad del sistema: 'setprop log.tag. 'Donde el nivel es VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT o SUPPRESS. SUPPRESS desactivará todos los registros para su etiqueta. También puede crear un archivo local.prop que con el siguiendo en él: 'log.tag.' = colocarlo en /data/local.prop.
cual hice a través adb shell
:
$ adb shell
# setprop
usage: setprop <key> <value>
# setprop log.tag.MyTag VERBOSE
#
Resultados: en
06-28 08:53:42.447: DEBUG/MyTag(24739): Is Loggable? true
06-28 08:53:44.744: DEBUG/MyTag(24739): Initialization: begin
06-28 08:53:44.744: DEBUG/MyTag(24739): Initialization: end, 0 ms
Véase el comentario de droidgren en esta respuesta - al parecer una llamada a addSplit también es necesario.
[3]: http://developer.android.com/reference/android/util/Log.html#isLoggable(java.lang.String, int)
¡Gracias, eso fue todo !. Pero necesita tener al menos un timesings.addSplit para hacer realidad la medición en cualquier momento. Y solo necesita hacer setprop una vez por etiqueta. ¡Genial! – droidgren
VERBOSE está "por encima" de DEPURACIÓN para Android. – George
@mbafford: Tal vez deberías actualizar la respuesta un poco para que uno sepa al leerla que uno tiene que llamar al método addSplit al menos una vez. – wojciii