寻找一种方法在应用程序关闭之前在Android应用程序中编写收集的内存日志

时间:2016-07-26 20:11:55

标签: android android-instrumentation

为了进行性能分析,我检测了我的android应用程序,以便它在所有函数的开头和结尾收集一些日志。我是通过在方法边界调用名为keepLog(String log)的公共静态方法来实现的。我还编写了另一个名为writeCollectedLogs()的公共静态方法,它应该将所有收集的日志写入磁盘。重要的是所有日志都是一次写入的,因为我不想每次都使用write系统调用(相反,我更喜欢将日志保存在内存中,并且最后只在磁盘上写入一次)

我的问题是我不知道在哪里拨打writeCollectedLogs()。我正在为整个Android应用程序寻找一些onTerminate()方法。但是,非默认的onDestroyonTerminate()似乎适用于我的情况。重要的是要注意我有两种运行我的应用程序的方法。有时我使用android instrumentation test runner运行我的应用程序,有时我使用adb来启动活动并手动发送触摸事件。

Instrumentation测试运行器打开我的应用程序,运行测试然后关闭应用程序。然而,在第二种情况下,我可以控制我的应用程序生命周期。我正在寻找一种在应用关闭之前调用writeCollectedLogs的通用方式。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这有点复杂,因为这个问题没有普遍的答案。如果您只使用活动,则 onPause()是唯一始终被调用的方法(应用程序崩溃除外)。不幸的是, onStop() onDestroy()不会以100%的概率调用。但是,android文档建议在 onPause()中避免CPU密集型工作。