国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

什么是 ANR?

2019-11-08 00:01:12
字體:
來源:轉載
供稿:網友

什么是 ANR?ANR:application Not Responding,即應用無響應

ANR一般有三種類型:

KeyDispatchTimeout(5 seconds) –主要類型按鍵或觸摸事件在特定時間內無響應BroadcastTimeout(10 seconds) –BroadcastReceiver在特定時間內無法處理完成ServiceTimeout(20 seconds) –小概率類型 Service在特定的時間內無法處理完成

KeyDispatchTimeoutAkey or touch event was not dispatched within the specified time(按鍵或觸摸事件在特定時間內無響應)具體的超時時間的定義在framework下的ActivityManagerService.java

//How long we wait until we timeout on key dispatching. static final int KEY_DISPATCHING_TIMEOUT = 5*1000

超時時間的計數一般是從按鍵分發給app開始。超時的原因一般有兩種:(1)當前的事件沒有機會得到處理(即UI線程正在處理前一個事件,沒有及時的完成或者looper被某種原因阻塞住了)(2)當前的事件正在處理,但沒有及時完成

一些避免 ANRs 的技巧

建議使用 AsycnTask 來異步處理后臺數據相比起 AsycnTask 來說,創建自己的線程或者 HandlerThread 稍微復雜一點。如果你想這樣做,你應該通過 PRocess.setThreadPriority() 并傳遞 THREAD_PRIORITY_BACKGROUND 來設置線程的優先級為”background”。如果你的程序需要響應正在后臺加載的任務,在你的 UI 中可以顯示 ProgressBar 來顯示進度。對游戲程序,在工作線程執行計算的任務。如果你的程序在啟動階段有一個耗時的初始化操作,可以考慮顯示一個閃屏,要么盡快的顯示主界面,然后馬上顯示一個加載的對話框,異步加載數據。無論哪種情況,你都應該顯示一個進度信息,以免用戶感覺程序有卡頓的情況。使用性能測試工具,例如 Systrace 與 Traceview 來判斷程序中影響響應性的瓶頸。

參考自Android ANR 分析解決方法官方文檔(中文版)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孟村| 门头沟区| 会同县| 景东| 湖南省| 会昌县| 德令哈市| 岢岚县| 乌恰县| 即墨市| 定南县| 武邑县| 云霄县| 九龙坡区| 高邑县| 个旧市| 黄平县| 泸西县| 保康县| 登封市| 濮阳县| 额尔古纳市| 丘北县| 交口县| 枣阳市| 隆子县| 鞍山市| 鄂州市| 毕节市| 东光县| 顺昌县| 祁门县| 乐陵市| 定安县| 巴中市| 平江县| 库车县| 芜湖县| 花垣县| 固始县| 磐安县|