Android ANR分析實踐(一):北京×××搭建ANR是什麼、產生的原因及如何避免ANR

來源:互聯網
上載者:User

標籤:時間片   輸出   應用程式   handle   art   是什麼   java   binder   creat   

一、 什麼是北京×××搭建 dsluntan.com VX:17061863513ANR

ANR,(Application Not Responding) 即應用程式無響應,在android應用中,當我們的UI線程被阻塞,就會彈出如下對話方塊,使用者可以選擇繼續等待或者關閉這個應用程式,這種現象我們稱之為ANR.

二、 ANR的類型

ANR的類型大致分為以下三種

1、主線程對輸入事件在5秒內沒有處理完畢 產生這種ANR的前提是要有輸入事件,如果使用者沒有觸發任何輸入事件,即便是主線程阻塞了,也不會產生ANR,因為InputDispatcher沒有分發事件給應用程式,當然也不會檢測處理逾時和報告ANR了。

2、主線程在執行BroadcastReceiver的onReceive函數時10秒內沒有執行完畢,後台進程是60秒 這種情況的ANR系統不會顯示對話方塊提示,僅是輸出log而已。

3、主線程在執行Service的各個生命週期函數時20秒內沒有執行完畢,後台進程為200秒
同樣對這種情況的ANR系統也不會顯示對話方塊提示,僅是輸出log。

三種類型的ANR只有第一種會有彈框。

Type

Method call

Log sample

time out

Input dispatch

onClick(),onTouch(),onKeydown(),onKeyup()

Input dispatching timed out

5

Broadcast

onReceive()

Timeout of broadcast

FG: 10, BG 60

Service

onBind(),onCreate(),onStartCommand(),onUnbind(),onDestroy()

Timeout executing service

FG: 20, BG 200

三、 ANR產生的原因

大致分為兩類:

1.應用自身進程引起的問題,比如, 在oncreate ,onstart等生命週期中執行耗時操作,ui線程阻塞,掛起,死迴圈等

2,其他進程引起的,比如:io操作導致cpu使用過高,導致當前應用進程無法搶佔到cpu時間片

細分的話可以分為以下一些情況:

耗時的網路訪問
大量的資料讀寫
資料庫操作
硬體操作(比如camera)
調用thread的join()方法、sleep()方法、wait()方法或者等待線程鎖的時候
service binder的數量達到上限
system server中發生WatchDog ANR
service忙導致逾時無響應
其他線程持有鎖,導致主線程等待逾時
其它線程終止或崩潰導致主線程一直等待...
四、如何避免ANR

耗時的工作()比如資料庫操作,I/O,網路操作),採用單獨的背景工作執行緒處理
用Handler來處理UIthread和工作thread的互動
合理使用 Handler 來處理其他線程請求;
合理使用並遵循 Android 生命週期, 避免在 onCreate() and onResume() 做過多的事情;
使用一些架構形成規範來避免記憶體等問題,例如:MVP、RxJava;
經常使用工具來檢查記憶體問題,例如:MAT、TraceView、AS 內建等工具;
避免載入大圖片引起記憶體不足導致 ANR;
避免記憶體泄露引起的 ANR。

Android ANR分析實踐(一):北京×××搭建ANR是什麼、產生的原因及如何避免ANR

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.