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)

正在申请 (https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks))

它没有提供所有方法,但有最常用的方法。

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)