簡體   English   中英

沒有特定原因的Android / Google ANR崩潰

[英]Android / google ANR crash without a specific cause

我有以下來自Android的崩潰報告:

> java.lang.RuntimeException:    at
> android.app.ActivityThread.performLaunchActivity
> (ActivityThread.java:2822)   at
> android.app.ActivityThread.handleLaunchActivity
> (ActivityThread.java:2897)   at android.app.ActivityThread.-wrap11
> (Unknown Source)   at android.app.ActivityThread$H.handleMessage
> (ActivityThread.java:1598)   at android.os.Handler.dispatchMessage
> (Handler.java:105)   at android.os.Looper.loop (Looper.java:251)   at
> android.app.ActivityThread.main (ActivityThread.java:6572)   at
> java.lang.reflect.Method.invoke (Native Method)   at
> com.android.internal.os.Zygote$MethodAndArgsCaller.run
> (Zygote.java:240)   at com.android.internal.os.ZygoteInit.main
> (ZygoteInit.java:767)

我的項目中沒有突出顯示特定的類/文件/行,也沒有調試android時通常期望的“ cause by”行。

谷歌搜索任何單獨的行似乎只會帶我去問一些關於空指針異常的問題,而這不是(無論如何,我已經知道如何調試它們,所以請不要因為調試空指針而責備我)。

我真正需要的建議是,從哪里開始調試/重新創建此非常有限的跟蹤崩潰。

有趣的是(也許)它僅在android 8.0上被報道過,但是在各種各樣的設備上

當您的應用程序在主線程上執行過多工作時,通常是由於磁盤或網絡I / O,會發生ANR( 應用程序無響應)

嘗試檢查一下。 我認為您可以通過StrictMode進行調試

ANR是應用程序無響應的縮寫。 Android開發者網站對調試這些文章在這里 要了解的關鍵是,這意味着您的應用程序正在UI線程上執行需要花費很長時間的事情。 常見的cuplrits:

  • 使用網絡
  • 使用磁盤
  • 一些激烈的計算
  • 訪問數據庫

您知道這是在android.app.ActivityThread.performLaunchActivity發生的。

幸運的是,Android是開源的,因此,如果您使用Google“ android source performLaunchActivity”,則您會發現源代碼是最重要的結果

您可以看到這是啟動您的應用程序的代碼。 因此,應用程序啟動中的某些程序運行非常緩慢。 您可以采取許多措施來對此進行調查:

  • 在您的應用啟動中尋找可訪問磁盤,網絡或數據庫的代碼,並將其移至后台線程
  • 嚴格模式運行您的應用,這會警告您不良行為
  • 上面鏈接的文章中還有很多提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM