otra - Android: ¿Cómo registrar todas las llamadas de métodos de actividad?
llamar otra actividad android (3)
Me gustaría tener una manera rápida de poder registrar todas las llamadas a todos los súper métodos llamados por la actividad.
He intentado este https://github.com/stephanenicolas/loglifecycle
pero por alguna razón no funciona con AppCompatActivity
...
Podría pedirle a mi IDE que anule todos los métodos; ¿Pero como agregar Log a todos ellos? ¿A mano? Debe haber una forma..
Es hora de buscar AspectJ http://code.google.com/p/android-aspectj/ y este es el artículo perfecto http://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/
Solo necesitas configurar la ejecución del aspecto.
aspect Trace{
pointcut traceMethods() : (execution(* com.xyz.*.*(..)));
before(): traceMethods(){
Signature sig = thisJoinPointStaticPart.getSignature();
String sourceName = thisJoinPointStaticPart.getSourceLocation().getWithinType().getCanonicalName();
Log.d("AOPLogging: " + sourceName, "Some method has called")
}
}
sobre expresiones que puedes leer en AOP
Podrías ir y jugar con stacktrace.
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
De los documentos:
El último elemento de la matriz representa la parte inferior de la pila, que es la invocación de método menos reciente en la secuencia.
EDITAR: Parece que hay una publicación completa sobre esto HERE
EDITADO: Si puede permitirse ir solo API 14+ puede usar
public void registerActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks callback)
en la aplicación ( https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks) )
No proporciona todos los métodos, pero tiene los más utilizados.
abstract void onActivityCreated(Activity activity, Bundle savedInstanceState)
abstract void onActivityDestroyed(Activity activity)
abstract void onActivityPaused(Activity activity)
abstract void onActivityResumed(Activity activity)
abstract void onActivitySaveInstanceState(Activity activity, Bundle outState)
abstract void onActivityStarted(Activity activity)
abstract void onActivityStopped(Activity activity)