• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦>知識大全>知識百科>百科知識>

    如何避免anr

    時間: 謝君787 分享

      ANR在Android上稱作應用程序無響應對話框,那么你對ANR了解多少呢?以下是由學習啦小編整理關于什么是anr的內容,希望大家喜歡!

      anr的定義

      在Android上,如果你的應用程序有一段時間響應不夠靈敏,系統會向用戶顯示一個對話框,這個對話框稱作應用程序無響應(ANR:Application Not Responding)對話框。用戶可以選擇“等待”而讓程序繼續運行,也可以選擇“強制關閉”。所以一個流暢的合理的應用程序中不能出現anr,而讓用戶每次都要處理這個對話框。因此,在程序里對響應性能的設計很重要,這樣系統不會顯示ANR給用戶。默認情況下,在android中Activity的最長執行時間是5秒,BroadcastReceiver的最長執行時間則是10秒。

      anr的避免方法

      考慮上面的ANR定義,讓我們來研究一下為什么它會在Android應用程序里發生和如何最佳構建應用程序來避免ANR。

      Android應用程序通常是運行在一個單獨的線程(例如,main)里。這意味著你的應用程序所做的事情如果在主線程里占用了太長的時間的話,就會引發ANR對話框,因為你的應用程序并沒有給自己機會來處理輸入事件或者Intent廣播。

      因此,運行在主線程里的任何方法都盡可能少做事情。特別是,Activity應該在它的關鍵生命周期方法(如onCreate()和onResume())里盡可能少的去做創建操作。潛在的耗時操作,例如網絡或數據庫操作,或者高耗時的計算如改變位圖尺寸,應該在子線程里(或者以數據庫操作為例,通過異步請求的方式)來完成。然而,不是說你的主線程阻塞在那里等待子線程的完成——也不是調用Thread.wait()或是Thread.sleep()。替代的方法是,主線程應該為子線程提供一個Handler,以便完成時能夠提交給主線程。以這種方式設計你的應用程序,將能保證你的主線程保持對輸入的響應性并能避免由于5秒輸入事件的超時引發的ANR對話框。這種做法應該在其它顯示UI的線程里效仿,因為它們都受相同的超時影響。

      IntentReceiver執行時間的特殊限制意味著它應該做:在后臺里做小的、瑣碎的工作如保存設定或者注冊一個Notification。和在主線程里調用的其它方法一樣,應用程序應該避免在BroadcastReceiver里做耗時的操作或計算。但不再是在子線程里做這些任務(因為BroadcastReceiver的生命周期短),替代的是,如果響應Intent廣播需要執行一個耗時的動作的話,應用程序應該啟動一個Service。順便提及一句,你也應該避免在Intent Receiver里啟動一個Activity,因為它會創建一個新的畫面,并從當前用戶正在運行的程序上搶奪焦點。如果你的應用程序在響應Intent廣播時需要向用戶展示什么,你應該使用Notification Manager來實現。

      一般來說,在應用程序里,100到200ms是用戶能感知阻滯的時間閾值。因此,這里有一些額外的技巧來避免ANR,并有助于讓你的應用程序看起來有響應性。

      如果你的應用程序為響應用戶輸入正在后臺工作的話,可以顯示工作的進度(ProgressBar和ProgressDialog對這種情況來說很有用)。

      特別是游戲,在子線程里做移動的計算。

      如果你的應用程序有一個耗時的初始化過程的話,考慮可以顯示一個Splash Screen或者快速顯示主畫面并異步來填充這些信息。在這兩種情況下,你都應該顯示正在進行的進度,以免用戶認為應用程序被凍結了。

      anr的技術

      ANR(Automatic Network Replenishment Technology)

      對視頻監控來說,存儲性能的重要性幾乎與圖像質量是一樣的。傳統DVR已經積累了不少先進的技術,如硬盤零碎片處理、硬盤輪休、異常斷電保護等技術,為監控圖像的可靠存儲提供有力保障,NVR作為新一代網絡監控產品,首先對DVR優秀的特性作了全面繼承,其次它還借助網絡化特性,進一步提升了存儲的可靠性與靈活性,這其中最有意義的就是ANR技術的應用。我們知道,NVR的基礎是網絡,但網絡承載業務的復雜性較高,導致了網絡的不穩定,因此直接影響了承載于上的業務的穩定性。并且,這一點對于視頻監控是絕對不容輕視的,因為可能由于網絡的暫時性故障會直接導致重要視頻錄像的缺失,而錄像資料之于視頻監控的重要性絕對是首當其沖的。因此,網絡不穩定導致錄像資料的遺失這一點也一度成為NVR對峙DVR決戰中最具致命性的隱患,但ANR技術的應用卻使一切問題不復存在。

      ANR,Automatic Network Replenishment Technology,它是一種結合本地存儲和網絡存儲的技術,ANR技術包括三個部分:一、偵測網絡狀況,即在網絡失效時,能記錄下失效前的傳輸數據,以待網絡連結恢復后把數據轉回到管理中心;二、雙重錄像,即當網絡出現問題或不穩定時,管理中心和前端雙方都會把圖像數據單獨存儲在緩沖區以作備份;三、自動修復數據,即當網絡恢復正常后,管理中心和前端雙方會對比各自的數據,檢查對比在網絡失效時的圖像數據,然后自動修復管理中心錯誤或遺失的數據。據此就可明白,具備ANR技術的NVR會在網絡出現故障時自動啟用前端存儲,網絡恢復后再將前端存儲數據自動同步至NVR中心,并且是在不影響實時視頻傳輸質量的前提下,從而實現了中心與前端的雙存儲備份,有效提升存儲的可靠性與靈活性。

      此外,針對一些對存儲有著更高要求的場合,NVR還將提供另一項存儲保障技術——RAID存儲。雖然RAID的應用會導致用戶使用成本的提高,但由于它的可靠性機制可以確保硬盤的有效合理使用、實現數據的冗余校驗,使圖像數據即使在部分存儲介質損壞的情況下也不會丟失等重要性能,從而使得這一技術在對監控系統性能要求極高的高端行業市場一直受到重視,因此RAID技術的應用必然也會促進NVR對新市場的拓展,進一步加快取代DVR的進程。
    看過“如何避免anr”的人還看了:

    1.anr 使用方法是什么

    2.國際化妝品十大品牌排名

    3.世界頂級化妝品牌2016

    4.最好的護膚品排行榜

    5.世界頂級化妝品排行榜

    2181356 主站蜘蛛池模板: 成人欧美一区二区三区的电影| 亚洲va在线va天堂va不卡下载| 国产悠悠视频在线播放| 天天综合天天做天天综合| 日韩三级中文字幕| 特级淫片aaaa**毛片| 自拍欧美在线综合另类| 欧美极度极品另类| 99精品一区二区三区| 中文字幕日韩人妻不卡一区| 亚洲av永久精品爱情岛论坛| 亚洲网站在线看| 公添了我的下面出差牌友| 国产亚洲一区二区在线观看| 国产精品亚韩精品无码a在线| 天堂网www中文在线| 尤物在线观看精品国产福利片| 日本免费精品一区二区三区| 欧美a级v片在线观看一区| 波多野结衣不打码视频| 男生和女生一起差差的视频30分 | 亚洲日韩AV无码一区二区三区人| 国产又大又硬又粗| 夜夜爽免费888视频| 日本亚洲中午字幕乱码| 榴莲榴莲榴莲榴莲官网| 狠狠躁天天躁无码中文字幕| 亚洲www在线观看| AAAA级少妇高潮大片在线观看 | 妇乱子伦精品小说588| 国产超爽人人爽人人做| 国产国产人免费人成免费视频 | 黑执事第二季免费观看| 一个人看的日本www| 久久精品无码aV| 亚洲麻豆精品果冻传媒| 免费五级在线观看日本片| 国产在线精品国自产拍影院同性 | 人人添人人妻人人爽夜欢视av| 四虎影视在线影院4hutv| 国产精品理论电影|