为了进行性能分析,我检测了我的android应用程序,以便它在所有函数的开头和结尾收集一些日志。我是通过在方法边界调用名为keepLog(String log)
的公共静态方法来实现的。我还编写了另一个名为writeCollectedLogs()
的公共静态方法,它应该将所有收集的日志写入磁盘。重要的是所有日志都是一次写入的,因为我不想每次都使用write系统调用(相反,我更喜欢将日志保存在内存中,并且最后只在磁盘上写入一次)
我的问题是我不知道在哪里拨打writeCollectedLogs()
。我正在为整个Android应用程序寻找一些onTerminate()
方法。但是,非默认的onDestroy
和onTerminate()
似乎适用于我的情况。重要的是要注意我有两种运行我的应用程序的方法。有时我使用android instrumentation test runner运行我的应用程序,有时我使用adb来启动活动并手动发送触摸事件。
Instrumentation测试运行器打开我的应用程序,运行测试然后关闭应用程序。然而,在第二种情况下,我可以控制我的应用程序生命周期。我正在寻找一种在应用关闭之前调用writeCollectedLogs
的通用方式。
有什么建议吗?
答案 0 :(得分:1)
这有点复杂,因为这个问题没有普遍的答案。如果您只使用活动,则 onPause()是唯一始终被调用的方法(应用程序崩溃除外)。不幸的是, onStop()和 onDestroy()不会以100%的概率调用。但是,android文档建议在 onPause()中避免CPU密集型工作。