Android中的ANR簡(jiǎn)述-創(chuàng)新互聯(lián)

ANR是Application Not responding,指應(yīng)用程序未響應(yīng),Android系統(tǒng)如果超過(guò)預(yù)定時(shí)間未能得到有效響應(yīng)或者響應(yīng)時(shí)間過(guò)長(zhǎng),都會(huì)造成ANR,因?yàn)锳ndroid系統(tǒng)對(duì)于一些事件需要在一定的時(shí)間范圍內(nèi)完成。ANR由消息處理機(jī)制保證, 核心原理是消息調(diào)度和超時(shí)處理,Android在系統(tǒng)層實(shí)現(xiàn)了一套精密的機(jī)制來(lái)發(fā)現(xiàn)ANR。

創(chuàng)新互聯(lián)主營(yíng)蘇尼特右網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),蘇尼特右h5微信平臺(tái)小程序開(kāi)發(fā)搭建,蘇尼特右網(wǎng)站營(yíng)銷(xiāo)推廣歡迎蘇尼特右等地區(qū)企業(yè)咨詢(xún)

ANR本質(zhì)上其實(shí)是一個(gè)性能的問(wèn)題,它要求主線程在規(guī)定的時(shí)間內(nèi)完成一些操作,如果處理超時(shí),則會(huì)認(rèn)為主線程失去了響應(yīng)其他操作的努力,主線程的耗時(shí)操作,都會(huì)降低應(yīng)用程序的響應(yīng)能力

ANR機(jī)制主體實(shí)現(xiàn)在系統(tǒng)層,系統(tǒng)進(jìn)程設(shè)計(jì)了不同的超時(shí)限制來(lái)跟蹤消息的處理。所有與ANR相關(guān)的消息,都會(huì)經(jīng)過(guò)系統(tǒng)進(jìn)程調(diào)度,然后派發(fā)到應(yīng)用進(jìn)程完成對(duì)消息的實(shí)際處理。 一旦應(yīng)用程序處理消息不當(dāng),超時(shí)限制就起作用了,它會(huì)收集一些類(lèi)似CUP使用情況等信息并報(bào)告用戶進(jìn)程無(wú)響應(yīng)情況

檢測(cè)ANR的核心是消息調(diào)度和超時(shí)處理

而在應(yīng)用中基本上只有四種情況會(huì)導(dǎo)致ANR

  • Service Timeout:Service在特定的時(shí)間內(nèi)無(wú)法處理完成

  • BroadcastQueue Timeout:BroadcastReceiver在特定時(shí)間內(nèi)無(wú)法處理完成

  • ContentProvider Timeout:內(nèi)容提供者執(zhí)行超時(shí)

  • inputDispatching Timeout: 按鍵或觸摸事件在特定時(shí)間內(nèi)無(wú)響應(yīng)。

而整個(gè)ANR機(jī)制可以分為:ANR檢測(cè)機(jī)制和ANR報(bào)告機(jī)制

Service檢測(cè)機(jī)制

在ANR機(jī)制中,Service運(yùn)行在應(yīng)用程序的主線程,如果Service的執(zhí)行時(shí)間超過(guò)20秒,就會(huì)引發(fā)ANR。

Android是通過(guò)設(shè)置定時(shí)消息實(shí)現(xiàn)監(jiān)測(cè)Service超時(shí)的。定時(shí)消息是由AMS的消息隊(duì)列處理的(system_server的ActivityManager線程)。 AMS有Service運(yùn)行的上下文信息,所以會(huì)在AMS中設(shè)置一套超時(shí)檢測(cè)機(jī)制

輸入事件檢測(cè)機(jī)制

應(yīng)用程序可以接收輸入事件(按鍵、觸屏、軌跡球等),當(dāng)5秒內(nèi)沒(méi)有處理完畢時(shí),則會(huì)引發(fā)ANR。

ANR報(bào)告機(jī)制

無(wú)論哪種類(lèi)型的ANR發(fā)生以后,最終都會(huì)調(diào)用AppErrors.appNotResponding()方法,想用戶或者開(kāi)發(fā)者報(bào)告發(fā)生ANR了,表現(xiàn)為彈出提示框,提示用戶該程序無(wú)法響應(yīng),打印相關(guān)日志

網(wǎng)站名稱(chēng):Android中的ANR簡(jiǎn)述-創(chuàng)新互聯(lián)
URL標(biāo)題:http://muchs.cn/article32/cdopsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、建站公司、靜態(tài)網(wǎng)站、微信小程序、微信公眾號(hào)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)