亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中的ANR簡述

發布時間:2020-08-16 19:13:23 來源:ITPUB博客 閱讀:221 作者:山有木xi 欄目:移動開發

ANR是Application Not responding,指應用程序未響應,Android系統如果超過預定時間未能得到有效響應或者響應時間過長,都會造成ANR,因為Android系統對于一些事件需要在一定的時間范圍內完成。ANR由消息處理機制保證, 核心原理是消息調度和超時處理,Android在系統層實現了一套精密的機制來發現ANR。

ANR本質上其實是一個性能的問題,它要求主線程在規定的時間內完成一些操作,如果處理超時,則會認為主線程失去了響應其他操作的努力,主線程的耗時操作,都會降低應用程序的響應能力

ANR機制主體實現在系統層,系統進程設計了不同的超時限制來跟蹤消息的處理。所有與ANR相關的消息,都會經過系統進程調度,然后派發到應用進程完成對消息的實際處理。 一旦應用程序處理消息不當,超時限制就起作用了,它會收集一些類似CUP使用情況等信息并報告用戶進程無響應情況

檢測ANR的核心是消息調度和超時處理

而在應用中基本上只有四種情況會導致ANR

  • Service Timeout:Service在特定的時間內無法處理完成

  • BroadcastQueue Timeout:BroadcastReceiver在特定時間內無法處理完成

  • ContentProvider Timeout:內容提供者執行超時

  • inputDispatching Timeout: 按鍵或觸摸事件在特定時間內無響應。

而整個ANR機制可以分為:ANR檢測機制和ANR報告機制

Service檢測機制

在ANR機制中,Service運行在應用程序的主線程,如果Service的執行時間超過20秒,就會引發ANR。

Android是通過設置定時消息實現監測Service超時的。定時消息是由AMS的消息隊列處理的(system_server的ActivityManager線程)。 AMS有Service運行的上下文信息,所以會在AMS中設置一套超時檢測機制

輸入事件檢測機制

應用程序可以接收輸入事件(按鍵、觸屏、軌跡球等),當5秒內沒有處理完畢時,則會引發ANR。

ANR報告機制

無論哪種類型的ANR發生以后,最終都會調用AppErrors.appNotResponding()方法,想用戶或者開發者報告發生ANR了,表現為彈出提示框,提示用戶該程序無法響應,打印相關日志

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌什县| 宝山区| 贵南县| 磐安县| 漠河县| 高要市| 涟源市| 金坛市| 阿荣旗| 炉霍县| 大洼县| 渝北区| 屏东县| 莱西市| 施甸县| 扎鲁特旗| 博爱县| 扶风县| 买车| 天台县| 营山县| 武鸣县| 新邵县| 镇远县| 永顺县| 舒城县| 枣强县| 岑巩县| 南召县| 本溪市| 洛南县| 玉林市| 东丰县| 城固县| 台州市| 贺兰县| 噶尔县| 江都市| 普宁市| 禄劝| 临海市|