關於APP放置一段時間後出現卡在某個界面無響應的處理分享

背景:APP最近需要發新版本,提給測試部測試後,測試部發現了一個bug,APP放置在後台,手機息屏放置一段時間後,這個時間無法確定,測試部的人是放置一晚上,作為測試條件,發現確實存在這個問題

原因分析:拿到手機後,打開應用,發現App可以打開,但是,無法進行任何操作,只能打開手機應用後台,關閉App進程,重新打開App,App恢復正常,一開始的判斷是App內存優化不足夠,導致的內存爆了,後來仔細分析並網上查詢以後,確定是App出現ANR導致的問題

ANR導致的原因(網上搜索以後自行覺得的重點):

  • InputDispatching Timeout:5秒内无法响应屏幕触摸事件或键盘输入事件
  • BroadcastQueue Timeout :在执行前台广播(BroadcastReceiver)的onReceive()函数时10秒没有处理完成,后台为60秒。
  • Service Timeout :前台服务20秒内,后台服务在200秒内没有执行完毕。
  • ContentProvider Timeout :ContentProvider的publish在10s内没进行完。

我APP出現的原因是:BroadcastQueue Timeout,onReceived()的時候出現的ANR;

PS:我是通過導致了ANR報告以後確認了這個問題

下面我會開始介紹用網上找到的導出ANRtraces文件的具體流程,我的電腦是MAC電腦,如果是Windows玩家,請自行根據下面的流程找到對應在Windows上的指令。PS:Mac真方便

推薦閱讀:https://www.jianshu.com/p/388166988cef,這個大佬的文章,讓我豁然開朗

下面我介紹導出traces的步驟:

進入終端:

輸入:adb shell

cd data/anr

ls

這樣就可以查看到當前手機出現過的ANR,手機系統生成的報告目錄

traces.txt文件的文件名一般是:anr_2020-06-30-16-58-16-171

這個就是我們需要拿出來的文件,當你確認你找到了你出現ANR的文件,就可以導出來

這個時候再終端上輸入:exit(退出shell)

在Android7.0以前的手機一般可以直接pull出具體的文件

終端指令:adb pull data/anr/anr_2020-06-30-16-58-16-171

這樣文件就會出現在當前mac用戶文件夾下

而在Android系統等級更高的手機,如果你輸入該指令,可能會提示:

adb: error: failed to copy 'data/anr/anr_2020-06-30-16-58-16-171' to './anr/anr_2020-06-30-16-58-16-171': remote open failed: Permission denied

地址:./anr/anr_2020-06-30-16-58-16-171 ,在mac上的意思就是:/Users/當前用戶/anr/文件

這裡就可以找到你的文件

當出現該問題時,只需要輸入:adb bugreport

等待進度條完成,就可以查看到對應的anr日誌

anr內容的分析,我就不在這裡累述,本人水平也有限,無法表達清楚,希望該文章能給你幫助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值