91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

黔东| 通许县| 太保市| 宜宾市| 阿克苏市| 罗城| 巍山| 红安县| 武汉市| 安阳市| 高碑店市| 吐鲁番市| 桂东县| 牙克石市| 赤水市| 西丰县| 临江市| 玉龙| 上蔡县| 融水| 商丘市| 陇西县| 抚顺县| 永丰县| 嘉鱼县| 确山县| 嵊州市| 社旗县| 五原县| 梅河口市| 大洼县| 长海县| 彭阳县| 宣武区| 静宁县| 司法| 祥云县| 罗源县| 永春县| 色达县| 泰宁县|