2011-12-06 10 views

risposta

3

Penso che questa tecnica non possa essere utilizzata utilizzando Java in qualsiasi ambiente.

Forse potresti ottenere un risultato simile utilizzando AOP.

Ma quello che puoi fare con quello sembra limitato su Android. Vedi Aspect-oriented programming in android. Infatti, dal momento che non compilerai il codice di destinazione (metodo di sistema), la tessitura in fase di compilazione (che sembra essere tutto ciò che potresti usare su Android) sarà inutile per questo caso. Come è questa risposta, suppongo.

Un altro pensiero ... Immagino che vogliate fare questo logging in modo coerente. Ma se ti servisse per eseguire il debug di un problema, potresti farlo usando uno conditional breakpoint in Eclipse.

un'espressione condizionale può contenere codice Java arbitrario e può contenere più economico, consentendo condizioni punto di interruzione per implementare funzioni come il tracciamento. Ad esempio, una condizione può eseguire un'istruzione print e quindi restituire un valore hard coded per non sospendere mai ("System.out.println (...); return false;").

Non so in modo specifico se questo funziona con i metodi nell'SDK di Android. Ma funziona con i metodi nel Java SDK. Ad esempio, qui è semplice codice:

System.err.println("foo"); 

Ho fatto un punto di interruzione condizionale in PrintStream.print, in questo modo:

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

E l'uscita della console durante il debug del programma è questo:

hello: foo 
foo 

Si noti che poiché il JDK non è compilato con i simboli di debug, non posso riferirmi ai parametri del metodo per nome, ma usando lo arg0..argn.

+0

questo si applica anche ai metodi API dal sdk di Android? –

Problemi correlati