<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓筆記俠

      專注安卓開發

      導航

      Android性能優化9-ANR完全解析

      1.什么是ANR

      在Android上,如果你的應用程序有一段時間響應不夠靈敏,系統會向用戶顯示一個對話框,這個對話框稱作應用程序無響應(ANR:Application Not Responding)對話框。用戶可以選擇讓程序繼續運行,但是,他們在使用你的應用程序時,并不希望每次都要處理這個對話框。因此,在程序里對響應性能的設計很重要,這樣,系統不會顯示ANR給用戶。

      2.ANR產生的原因

      ANR產生的根本原因是APP阻塞了UI線程。在android系統中每個App只有一個UI線程,是在App創建時默認生成的,UI線程默認初始化了一個消息循環來處理UI消息,ANR往往就是處理UI消息超時了。那么UI消息來源有哪些呢?主要有兩種來源:

      2.1 來自于AMS的回調消息

      在Android系統中,應用程序是有Android的四大組件組成,AMS負責對應用程序四大組件生命周期的管理,當AMS對應用程序組件的生命周期進行回調超過AMS定義的響應時間時,AMS就會報ANR。出現這種情況,一般是因為在這些組件的回調函數里面進行了耗時操作(如網絡操作、SD卡文件操作、數據庫操作、大量計算等),AMS對組件常見的回調函數及超時時間如下:

      Activity: onCreate(), onResume(), onDestroy(), 
      onKeyDown(), onClick()等,超時時間5s
      
      Application: onCreate(), onTerminate()等,超時時間5s
      
      Service: onCreate(), onStart(), onDestroy()等,超時時間20s
      
      BroadcastReceiver:onReceiver(),前臺APP廣播超時時間是10s,后臺App是60s
      

      2.2 App自己的發出的消息

      除了AMS對四大組件的回調消息運行在UI線程外,有些操作也是運行在UI線程的:

      AsyncTask: onPreExecute(), onProgressUpdate(), onPostExecute(), onCancel()等,超時5s
      
      Mainthread handler: handleMessage(), post*(runnable r)等,超時5s
      

      3.怎樣避免ANR

      當我們知道ANR的產生原因之后,就可以較為輕松的避免ANR了。并且Android為我們提供了很多解決方法。主要歸為一下幾類。

      1:UI線程盡量只做跟UI相關的工作,但一些復雜的UI操作,還是需要一些技巧來處理,不如你讓一個Button去setText一個10M的文本,UI肯定崩掉了,不過對于此類問題,分段加載貌似是最好的方法了。
      2:讓耗時的工作(比如數據庫操作,I/O,連接網絡或者別的有可能阻礙UI線程的操作)把它放入單獨的線程處理。
      3:盡量用Handler來處理UIthread和別的thread之間的交互。
      

      4.發布的程序怎樣收集ANR異常

      對于發布的程序,ANR異常是很那捕獲不到的(我查找過很多資料,如果您有很好的捕獲辦法,歡迎再下方留言),所以我們需要采用其它的方法來分析ANR。app在產生ANR異常后,會將異常信息寫入"/data/anr/traces.txt"文件我們可以通過收集用戶的這個文件,就可以來獲取用戶產生ANR的地方了。 

      ANR的Log信息保存在:/data/anr/traces.txt,每一次新的ANR發生,會把之前的ANR信息覆蓋掉。

      我在一個按鈕的onClick事件里寫了如下代碼

      while(true){}
      

      來故意產生一個ANR異常,然后打開/data/anr/traces.tx文件,主要有用的地方如下圖:

      我們可以看到,在trace.txt文件里已經定位到異常產生的地方。所以,在用戶反饋界面,當我們發現戶反饋內容里是否出現了"無響應"等字眼的時候,就可以提示用戶是否上傳異常文件,來幫助我們改善產品之類的。當然,現在流氓猖狂,貌似做到這么細致產品的,為數不多了。

      ANR屬于慢性崩潰,Android應用里的還存在著很多的強制崩潰,別如你執行了3/0了,空指針異常了等等,這些情況應用程序會直接崩掉,用戶體驗超級差

       

      https://blog.csdn.net/itachi85/article/details/6918761

        

      posted on 2018-07-09 13:18  安卓筆記俠  閱讀(1842)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 国产成人精品永久免费视频| 亚洲av中文久久精品国内| 中文字幕亚洲无线码一区女同| 亚洲一区二区精品动漫| 国产精品中出一区二区三区| 国产精品爽黄69天堂a| 国产一区二区三区乱码在线观看 | 国产精品成人亚洲一区二区| 久久66热人妻偷产精品| 又爽又黄又无遮掩的免费视频| 久99久热免费视频播放| 欧美午夜理伦三级在线观看| 欧美国产精品啪啪| 国产三级国产精品国产专| 日韩av在线不卡一区二区三区 | 国产成人综合色就色综合| 亚洲精品久久久久成人2007| 亚洲精品国模一区二区| 717午夜伦伦电影理论片| 国产一区在线播放av| 亚洲精品有码在线观看| 亚洲av永久无码精品水牛影视| 国产色视频一区二区三区qq号| 欧洲美熟女乱又伦免费视频| 开心五月深深爱天天天操| 97se亚洲综合自在线| 亚洲 日本 欧洲 欧美 视频| а∨天堂一区中文字幕| 亚洲一区在线成人av| 日本不卡一区| 好屌草这里只有精品| 国产情侣激情在线对白| 久久精品无码专区免费东京热 | 亚洲国产精品人人做人人爱| 国产一区二区av天堂热| 久久夜色精品国产亚洲a| 九寨沟县| 日韩精品久久一区二区三| 国产一区二区不卡91| 亚洲AVAV天堂AV在线网阿V| 图片区小说区av区|