1樓:琉璃易碎
anr是application not responding的簡稱,主要是說應用程式出現無響應的情況。在這個情況出現的時候同時在手機介面會彈出響應的對話方塊,提示應用程式無響應。
anr的幾種型別:
1)按鍵超時:android預設的響應時間是5s,如果一個觸屏事件超過5s,那麼就會發生此現象。
2)廣播超時:廣播的預設響應時間是10s,如果一個廣播在10s之內還美柚執行完,那麼就會出現此現象。
3)服務超時:服務的預設響應事件是20s,如果請求的服務在20s內失敗,那麼就會發生此現象。
anr事件與異常的區別。
anr事件是由於一些操作的原因或者是反應事件較慢會出現程式無響應的情況,而異常是程式由於**或者是一些其他的原因出現程式停止執行的情況,這兩種情況的性質是完全不一樣的。
2樓:九號公寓
anr是android not response的縮寫,大概意思就是當前執行的程式沒有響應,或者該執行的軟體在android系統runtime層響應超時。簡單的說就是程式由於各種原因(系統邏輯,空指標,記憶體溢位等等)崩潰了。希望可以幫到您。
android基本概念 什麼是anr 如何避免它
3樓:小傻
android中anr概念如下:
避免anr的情況可以通過如下方法:
在主執行緒中儘量避免耗時的操作,比如不能長時間的連線伺服器獲取資料,需要另外開一個執行緒,然後使用handler類通知主介面更新,如下**:
handler myhandler = new handler();
;主介面不能做太多的工作,否則導致記憶體被佔滿,程式會無響應。可以將一些工作進行延遲處理。
android如何避免anr?
4樓:育知同創教育
anr:application not responding,五秒在android中,活動管理器和視窗管理器這兩個系統服務負責監視應用程式的響應。當出現下列情況時,android就會顯示anr對話方塊了:
對輸入事件(如按鍵、觸控式螢幕事件)的響應超過5秒 意向接受器(intentreceiver)超過10秒鐘仍未執行完畢。
android應用程式完全執行在一個獨立的執行緒中(例如main)。這就意味著,任何在主執行緒中執行的,需要消耗大量時間的操作都會引發anr。因為此時,你的應用程式已經沒有機會去響應輸入事件和意向廣播(intent broadcast)。
因此,任何執行在主執行緒中的方法,都要儘可能的只做少量的工作。特別是活動生命週期中的重要方法如oncreate()和 onresume()等更應如此。潛在的比較耗時的操作,如訪問網路和資料庫;或者是開銷很大的計算,比如改變點陣圖的大小,需要在一個單獨的子執行緒中完成(或者是使用非同步請求,如資料庫操作)。
但這並不意味著你的主執行緒需要進入阻塞狀態已等待子執行緒結束 --也不需要呼叫或者方法。
取而代之的是,主執行緒為子執行緒提供一個控制代碼(handler),讓子執行緒在即將結束的時候呼叫它(xing:可以參看snake的例子,這種方法與以前我們所接觸的有所不同)。使用這種方法涉及你的應用程式,能夠保證你的程式對輸入保持良好的響應,從而避免因為輸入事件超過5秒鐘不被處理而產生的anr。
這種實踐需要應用到所有顯示使用者介面的執行緒,因為他們都面臨著同樣的超時問題。
5樓:who宿敵
在android裡,應用程式的響應性是由activity manager和windowmanager系統服務監視的 。當它監測到以下情況中的一個時,android就會針對特定的應用程式顯示anr:
在5秒內沒有響應輸入的事件(例如,按鍵按下,螢幕觸控)
broadcastreceiver在10秒內沒有執行完畢。
避免方法:1、執行在主執行緒裡的任何方法都儘可能少做事情。特別是,activity應該在它的關鍵生命週期方法(如oncreate()和onresume())裡儘可能少的去做建立操作。
可以採用重新開啟子執行緒的方式,然後使用handler+message的方式做一些操作,比如更新主執行緒中的ui等)
2、應用程式應該避免在broadcastreceiver裡做耗時的操作或計算。但不再是在子執行緒裡做這些任務(因為 broadcastreceiver的生命週期短),替代的是,如果響應intent廣播需要執行一個耗時的動作的話,應用程式應該啟動一個 service。(此處需要注意的是可以在廣播接受者中啟動service,但是卻不可以在service中啟動broadcasereciver)
3、避免在intent receiver裡啟動一個activity,因為它會建立一個新的畫面,並從當前使用者正在執行的程式上搶奪焦點。如果你的應用程式在響應intent廣 播時需要向使用者展示什麼,你應該使用notification manager來實現。
6樓:匿名使用者
1:優化**,提高**執行效率。
2:開啟執行緒,對於耗時的操作或者迴圈遍歷的處理,儘量保證**簡介,避免出現死迴圈。如果在迴圈的時候還處理了bitmap,檔案讀寫等內容,那麼一定考慮吧這些操作提出來,待耗時操作,迴圈遍歷處理完資料後,在進行這樣的步驟。
3:頁面初始化或者頁面中有需要設定**的時候,不要在主執行緒中載入處理bitmap資源,不然阻塞了主執行緒,會出現程式無響應,強制關閉的問題。
簡單就總結這幾點,希望有用。
7樓:灬蘇墨軒灬
1.避免在主執行緒上進行復雜耗時的操作,比如說傳送接收網路資料/進行大量計算/運算元據庫/讀寫檔案等。這個可以通過使用asynctask或者使用多執行緒來實現。
要進行復雜操作的的時候,可以在onreceive()方法中啟動一個service來處理。
3.在設計及**編寫階段避免出現出現同步/死鎖或者錯誤處理不恰當等情況。
怎樣在Android中解析,x,xls,xlsx格式文
使用wpsoffice 使用wps office可以解決這一問題!docx xlsx pptx比doc xls ppt好在什麼地方 沒什麼好的地方。這只是微軟採取的一種市場策略而已。因為國產辦公軟體一直苦於跟微軟office相容,如果不相容,會降低使用者對國產軟體的熱情 因此,微軟想方設法讓自己的檔...
在ecel中什麼意思,在excel中 什麼意思
關於山岔村發展的調研提綱 同志們好,山岔村區位好 自然條件優,但人多地少 農業基礎薄弱 產業結構單 一 收入低 貧困人口多。在經過爭取資金 設施完善 樹立信心 整合資源 創新模式 融合產業 發展文化等一系列舉措後,實現脫貧奔小康,經調研,具體如下 爭取整合幫扶資金 專項資金,完善基礎 教育設施。硬化...
android中adapter有什麼作用?常見的adapte
adapter即介面卡,介面卡的作用是允許硬體或電子介面與其它硬體或電子介面相連,也可以是資訊介面。常見的adapter如 電源介面卡 三角架基座轉接部件 usb與串列埠的轉接裝置等。介面卡模式主要應用於,當介面裡定義的方法無法滿足客戶的需求,或者說介面裡定義的方法的名稱或者方法介面與客戶需求有衝突...