2011-12-06 10 views

Respuesta

3

Creo que esa técnica no se podía usar usando Java en ningún entorno.

Tal vez podría lograr un resultado similar usando AOP.

Pero lo que puedes hacer con eso parece limitado en Android. Ver Aspect-oriented programming in android. De hecho, dado que no compilará el código objetivo (método del sistema), el entretejido en tiempo de compilación (que parece ser todo lo que podría usar en Android) será inútil en este caso. Como es esta respuesta, supongo.

Otro pensamiento ... Supongo que quieres hacer esta registración de manera consistente. Pero si necesita esto para solucionar un problema, puede hacerlo usando un conditional breakpoint in Eclipse.

Una expresión condicional puede contener código Java arbitrario y puede contener más de una sentencia, lo que permite condiciones de punto de interrupción a implementar características como el rastreo. Por ejemplo, una condición puede ejecutar una instrucción de impresión y luego devolver un valor codificado para nunca suspender ("System.out.println (...); return false;").

No sé específicamente si esto funciona con los métodos del SDK de Android. Pero funciona con métodos en Java SDK. Por ejemplo, aquí es simple código:

System.err.println("foo"); 

Hice un punto de interrupción condicional en PrintStream.print, así:

System.err.println("hello: " + arg0); 
return false; 

Y la salida de la consola al depurar en el programa es la siguiente:

hello: foo 
foo 

Tenga en cuenta que dado que el JDK no está compilado con símbolos de depuración, no puedo referirme a los parámetros del método por nombre, pero usando el arg0..argn.

+0

¿Esto también se aplica a los métodos api del android sdk? –

Cuestiones relacionadas