Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:如何记录所有活动方法调用?_Android_Android Lifecycle - Fatal编程技术网

Android:如何记录所有活动方法调用?

Android:如何记录所有活动方法调用?,android,android-lifecycle,Android,Android Lifecycle,我希望有一个快速的方法能够记录对活动调用的所有超级方法的所有调用 我试过这个 但由于某些原因,它不适用于AppCompatActivity 我可以要求我的IDE覆盖所有的方法;但是如何将日志添加到所有日志中呢?手动?一定有办法 你可以到处玩stacktrace StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); 从文档中: 数组的最后一个元素表示堆栈的底部, 这是序列中最近最少的方法调

我希望有一个快速的方法能够记录对活动调用的所有超级方法的所有调用

我试过这个

但由于某些原因,它不适用于
AppCompatActivity


我可以要求我的IDE覆盖所有的方法;但是如何将日志添加到所有日志中呢?手动?一定有办法

你可以到处玩stacktrace

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
从文档中:

数组的最后一个元素表示堆栈的底部, 这是序列中最近最少的方法调用


编辑:关于这一点,似乎有一整篇文章

现在是寻找AspectJ的时候了 这是一篇完美的文章

您只需要设置方面执行

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")
   }
}
关于您可以在上阅读的表达式编辑: 如果你能负担得起只去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)

如果您尝试Hugo,则不知道:使用Hugo,您必须将@logsomething放在要记录的每个方法前面,这与手动操作相同:-(((@LisaAnne)你想记录所有方法还是只记录对super的调用?不幸的是,我认为你必须咬紧牙关,手动添加它们。你可以创建一个类来扩展它,而这个类只有登录。这样你就不会把你的实际类弄得乱七八糟,你可以在其他类中重用它。@Assa只有super就足够了如何订阅活动的stacktrace。TC希望在活动中记录每个方法。stacktrace超出了仅活动的方法,它记录了所有内容。如果只需要活动方法,则需要过滤结果,请参阅我发布的链接,它非常详细。因此,这基本上是一个使用stacktrace的库?不,它是一个大框架面向方面的编程。它有几个预编译和运行时阶段。所以通常是EE框架。但它在android上工作得非常完美。所以它是记录海豚的大工具。但TC任务是AOP的常规问题。这正是我要关注的问题,如果我必须解决这个问题,这是一个很好的解决方案,但它只有在14 API之后才有用。所以这取决于min api版本。