![](/img/trans.png)
[英]android application/activity life cycle: when should we save to flash?
[英]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.