日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ANR

發(fā)布時間:2025/6/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ANR 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一:什么是ANR

  ANR:Application Not Responding,即應用無響應

二:ANR的類型

  ANR一般有三種類型:

  1:KeyDispatchTimeout(5 seconds) --主要類型

    按鍵或觸摸事件在特定時間內無響應

  2:BroadcastTimeout(10 seconds)

    BroadcastReceiver在特定時間內無法處理完成

  3:ServiceTimeout(20 seconds) --小概率類型

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

三:KeyDispatchTimeout

  A key or touch event was not dispatched within the specified time(按鍵或觸摸事件在特定時間內無響應)

  具體的超時時間的定義在framework下的

  ActivityManagerService.java

  //How long we wait until we timeout on key dispatching.

  staticfinal int KEY_DISPATCHING_TIMEOUT = 5*1000

四:為什么會超時呢?

  超時時間的計數(shù)一般是從按鍵分發(fā)給app開始。超時的原因一般有兩種:

  (1)當前的事件沒有機會得到處理(即UI線程正在處理前一個事件,沒有及時的完成或者looper被某種原因阻塞住了)

  (2)當前的事件正在處理,但沒有及時完成

五:如何避免KeyDispatchTimeout

  1:UI線程盡量只做跟UI相關的工作

  2:耗時的工作(比如數(shù)據(jù)庫操作,I/O,連接網(wǎng)絡或者別的有可能阻礙UI線程的操作)把它放入單獨的線程處理

  3:盡量用Handler來處理UIthread和別的thread之間的交互

六:UI線程

  說了那么多的UI線程,那么哪些屬于UI線程呢?

  UI線程主要包括如下:

  • Activity:onCreate(), onResume(), onDestroy(), onKeyDown(), onClick(),etc
  • AsyncTask: onPreExecute(), onProgressUpdate(), onPostExecute(), onCancel,etc
  • Mainthread handler: handleMessage(), post*(runnable r), etc
  • other
  • 轉載于:https://www.cnblogs.com/liyuejiao/p/4257040.html

    總結

    以上是生活随笔為你收集整理的ANR的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。