繁体   English   中英

Android活动生命周期:何时将Logcat保存到文件中?

[英]Android activity life cycle: when to save the Logcat into a file?

我的问题与类似,但我有更具体的需求。 开始了:

在我的Android应用程序中,我想添加将Logcat保存到日志文件中的功能。 因此,当用户报告我的应用程序有问题时,我可以要求提供日志文件。 保存的logcat到一个文件是非常直接的,如讨论在这里 现在的问题是:什么时候保存?

我当前的计划是在应用程序的onCreate中调用logcat -c ,并将Logcat保存在onStop中。 通过提前调用logcat -c ,我删除了与我的应用程序无关的信息。

但是,我在计划中看到两个缺陷:

  • 如果用户安装了两个与我不同的应用程序,则第二个应用程序可能会在第一个完成之前启动。 因为没有调用第一个应用程序的onStop,所以Logcat尚未保存。 logcat -c ,第二个应用程序的onCreate中的logcat -c将清除第一个应用程序的所有日志记录信息。

  • 即使只有一个应用程序正在运行,如果它崩溃,它的onStop也不会被调用。 还是? 我检查了活动的生命周期,但无法确定在发生崩溃时是否调用onStop。 假设它没有被调用,那么这超出了我的目的。 我需要Logcat来了解为什么我的应用程序崩溃,但是如果Logcat崩溃,则不会保存。

有什么想法和/或建议吗? 提前致谢!

不建议在发行版本上启用日志。 当应用程序崩溃并报告用户时,您可以从开发人员控制台获取崩溃堆栈跟踪。 堆栈跟踪足以分析崩溃,它将清楚地指出类,方法和行号。

如果您在应用程序中启用了proguard,则可以使用映射文件来重新分析堆栈跟踪以分析崩溃。

尝试在运行时读取Logcat时还有其他一些问题:在发送报告时,日志的重要部分可能已经退出缓冲区,并且您首先需要READ_LOGS权限才能读取Logcat。

我建议实现各种免费日志记录库之一。 我更喜欢Crashlytics ,它会自动处理崩溃报告(通过使用UncaughtExceptionHandler),并允许您在发送异常之前指定各种标记和用户日志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM