Android:如何记录所有 Activity 方法调用?
Android: how to log all Activity methods calls?
我希望有一种快速的方法能够记录对 activity 调用的所有超级方法的所有调用。
这个我试过了https://github.com/stephanenicolas/loglifecycle
但由于某些原因它不适用于 AppCompatActivity
...
我可以让我的 IDE 覆盖所有方法;但是如何将日志添加到所有这些?手动?一定有办法..
你可以四处走走,自己玩一玩堆栈跟踪
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
来自文档:
The last element of the array represents the bottom of the stack,
which is the least recent method invocation in the sequence.
编辑:关于这个HERE
似乎有一个完整的post
是时候寻找AspectJ了
http://code.google.com/p/android-aspectj/
这是一篇完美的文章
http://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/
您只需要设置方面执行
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")
}
}
关于您可以在 AOP
上阅读的表达式
已编辑:
如果您负担得起 API 14+,您可以使用
public void registerActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks callback)
它没有提供所有方法,但有最常用的方法。
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)
我希望有一种快速的方法能够记录对 activity 调用的所有超级方法的所有调用。
这个我试过了https://github.com/stephanenicolas/loglifecycle
但由于某些原因它不适用于 AppCompatActivity
...
我可以让我的 IDE 覆盖所有方法;但是如何将日志添加到所有这些?手动?一定有办法..
你可以四处走走,自己玩一玩堆栈跟踪
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
来自文档:
The last element of the array represents the bottom of the stack, which is the least recent method invocation in the sequence.
编辑:关于这个HERE
似乎有一个完整的post是时候寻找AspectJ了 http://code.google.com/p/android-aspectj/ 这是一篇完美的文章 http://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/
您只需要设置方面执行
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")
}
}
关于您可以在 AOP
上阅读的表达式已编辑: 如果您负担得起 API 14+,您可以使用
public void registerActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks callback)
它没有提供所有方法,但有最常用的方法。
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)