我希望能够快速记录对活动调用的所有超级方法的所有调用。
我试过这个https://github.com/stephanenicolas/loglifecycle
但由于某种原因,它不适用于AppCompatActivity
...
我可以要求我的IDE覆盖所有方法;但是如何将Log添加到所有这些?手动?必须有办法..
答案 0 :(得分:11)
你可以到处玩堆栈跟踪
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
来自文档:
数组的最后一个元素表示堆栈的底部, 这是序列中最近的方法调用。
编辑:似乎有关于此HERE的完整帖子
答案 1 :(得分:4)
是时候寻找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
上阅读的表达方式答案 2 :(得分:4)
<强>编辑:强> 如果你能负担得起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)