1. <div id="f8mbs"></div>
        您好,歡迎來到源碼搜藏網!分享精神,快樂你我!
        [加入VIP] 設為首頁 | 收藏本站 | 網站地圖 | Sitemap | TAG標簽
      2. 首 頁
      3. 在線工具
      4. jquery手冊
      5. 當前位置:首頁 > 安卓源碼 > 技術博客 >

        如何修復Android vitals的應用質量問題并提高Play商店的性能

        時間:2018-08-08 21:57 來源:互聯網 作者:源碼搜藏 瀏覽:收藏 挑錯 推薦 打印

        深入探討兩個關鍵的穩定性問題 - 應用程序無響應事件和過度喚醒 - 以改善您的應用程序功能和質量。 編輯說明 本文位于CodeProject的贊助商的產品展示部分。 這些文章旨在為您提供我們認為有用且對開發人員有價值的產品和服務的信息。 對于應用程序開發人員而 深入探討兩個關鍵的穩定性問題 - 應用程序無響應事件和過度喚醒 - 以改善您的應用程序功能和質量。

        編輯說明

        本文位于CodeProject的贊助商的產品展示部分。這些文章旨在為您提供我們認為有用且對開發人員有價值的產品和服務的信息。

        如何修復Android vitals的應用質量問題并提高Play商店的性能

        對于應用程序開發人員而言,沒有比快樂用戶更好的衡量標準,最好是很多用戶。實現這一目標的最佳方法是擁有一個人們想要使用的優秀應用程序,但“偉大”是什么意思呢?它歸結為兩件事:功能和應用程序質量。雖然前者最終取決于您的創造力和選擇的商業模式,但后者可以客觀地衡量和改進。

        在去年進行的Google內部研究中,我們查看了Play商店的一星評價,發現超過40%的人認為應用穩定性是一個問題。相反,人們會不斷獎勵效果最好的應用,并提供更好的評​​分和評價。這樣可以在Google Play上獲得更好的排名,這有助于增加安裝量。不僅如此,用戶仍然更加投入,并愿意花更多的時間和金錢在這些應用程序中。

        因此,解決應用程序的穩定性問題會對其成功率產生重大影響。

        為了提供客觀的質量衡量標準,您可以輕松發現應用程序需要解決的穩定性問題,我們在Play控制臺中添加了一個名為Android vitals的新部分。本節將介紹應用程序中的性能和穩定性問題,而無需在代碼中添加工具或庫。Android vitals收集有關應用程序性能的匿名指標,而您的應用程序可在無數設備上運行。它為您提供了可能難以獲得的信息,即使在使用硬件實驗室進行測試時也是如此。

        Android vitals可以提醒您的問題包括崩潰,應用程序無響應(ANR)和渲染時間。這些問題都會直接影響用戶的體驗和對應用的看法。然后有一類糟糕的應用程序行為,用戶可能無法直接與您的應用程序關聯:那些耗盡電池的速度比預期的要快。

        在本文中,我將介紹其中兩個問題:

        • 過度的醒來這些會影響電池壽命,并且如果用戶無法及時到達充電器,則會剝奪用戶的設備。這種行為可能會讓用戶迅速卸載您的應用。
        • 應用程序無響應(ANR)事件當應用程序的UI凍結時,這些事件會記錄下來。當凍結發生時,如果您的應用程序位于前臺,則會出現一個對話框,讓用戶有機會關閉應用程序或等待應用程序響應。從用戶的角度來看,這種行為與應用程序崩潰一樣糟糕。用戶可能無法立即卸載您的應用,但如果ANR持續存在,則用戶很可能會尋找替代應用。

        過度的醒來

        如何修復Android vitals的應用質量問題并提高Play商店的性能

        那么,什么是喚醒,什么時候變得過度?

        為延長電池壽命,屏幕關閉后,Android設備會通過禁用主CPU核心進入深度睡眠模式。除非用戶喚醒設備,否則設備應盡可能長時間保持此狀態。但是,有些事件在喚醒CPU并提醒用戶時很重要 - 例如,當警報響起或新的聊天消息到達時。這些警報可以通過喚醒警報來處理,但正如我將解釋的那樣,不必如此。到目前為止,喚醒似乎是一件好事,將重要事件帶給用戶注意,但其中太多和電池壽命都受到影響。

        Android vitals如何顯示過多的喚醒?

        了解您的應用是否會帶來太多的喚醒功能,這就是Android vitals的用武之地。收集的有關您應用行為的匿名數據用于顯示自設備充滿電后每小時經歷超過10次喚醒的用戶百分比。要尋找的關鍵是紅色圖標; 此圖標表示您的應用已超出不良行為閾值。此閾值表示您的應用是Google Play中性能較差的應用之一,您應該著眼于改善其行為。

        如何修復Android vitals的應用質量問題并提高Play商店的性能

        是否有喚醒警報的替代方案?

        在給定時間或間隔后喚醒設備的主要方法是使用AlarmManager API使用RTC_WAKEUP或ELAPSED_REALTIME_WAKEUP標志調度警報。重要的是要謹慎使用此功能,并且僅在其他調度和通知機制無法提供更好服務的情況下使用。當您考慮使用喚醒警報時,需要考慮以下事項:

        • 如果您需要顯示信息以響應來自網絡的數據,請考慮通過實施Firebase云消息傳遞來使用推送消息。使用此機制,您的應用只會在需要時被喚醒,而不是定期輪詢新數據。
        • 如果您不能使用推送消息并依賴定期輪詢,請考慮使用JobScheduler或Firebase JobDispatcher(甚至是SyncManager用于帳戶數據)。這些是比AlarmManager更高級的API,并為更智能的作業調度提供以下好處:
          • 批處理 - 而不是多次喚醒系統來運行作業,許多作業將被批量處理,讓設備長時間睡眠。
          • 標準 - 您可以指定運行工作時必須滿足的條件,例如網絡可用性或電池充電狀態。使用標準可以避免喚醒設備并不必要地運行您的應用程序。
          • 持久性和自動后退作業可以持久化(即使在重新啟動時),并且在發生故障時將自動重試。
          • 只有打盹模式或應用程序待機沒有限制時,才會運行打盹兼容性作業。

        只有當推送消息和作業調度不適合您的工作時,您是否應該使用AlarmManager來安排喚醒警報。或者從另一個角度來看,只有在需要在特定時間啟動警報時才需要喚醒警報,無論網絡或其他條件如何。

        當Android vitals顯示出過多的喚醒時你應該怎么做?

        要解決過多的喚醒問題,請確定應用安排喚醒警報的位置,然后降低觸發警報的頻率。

        要確定應用程序在何處安排喚醒警報,請在Android Studio中打開AlarmManager類,右鍵單擊RTC_WAKEUP或ELAPSED_REALTIME_WAKEUP字段,然后選擇“查找用法”。這將顯示項目中這些標志的所有實例。檢查每一個,看看是否可以切換到更智能的作業調度機制之一。

        如何修復Android vitals的應用質量問題并提高Play商店的性能

        您還可以在“查找用法”選項中將范圍設置為“項目和庫”,以確定您的依賴項是否正在使用AlarmManager API。如果是,您應該考慮使用替代庫或向作者報告問題。

        如果您決定必須使用喚醒警報,則如果您提供以下警報標記,Play Console會提供更好的分析數據:

        • 在警報的標簽名稱中包含您的包裹,類別或方法名稱。這也可以幫助您輕松識別源中警報的設置位置。
        • 不要將Class#getName()用于警報名稱,因為它可能會被Proguard混淆。請改用硬編碼字符串。
        • 不要將計數器或其他唯一標識符添加到警報標記,因為系統可能會刪除標記,并且無法將它們聚合為有用的數據。

        應用程序無響應

        如何修復Android vitals的應用質量問題并提高Play商店的性能

        那么,什么是應用程序無響應(ANR)以及它如何影響用戶?

        對于用戶而言,ANR是他們嘗試與您的應用進行交互的事件,但該界面已被凍結。在界面保持凍結幾秒鐘后,將顯示一個對話框,讓用戶可以選擇等待或強制退出應用程序。

        從應用程序開發的角度來看,當應用程序通過執行長操作(例如磁盤或網絡I / O)來阻止主線程時,就會發生ANR。主線程(有時稱為UI線程)負責響應用戶事件并刷新屏幕上每秒60次繪制的內容。因此,任何可能延遲其工作的操作都會轉移到后臺線程,這一點至關重要。

        Android vitals如何顯示ANR?

        使用收集的有關您應用的ANR事件的匿名數據,Android vitals提供了有關ANR的幾個級別的詳細信息。主屏幕顯示應用中ANR活動的摘要。這顯示了用戶至少經歷過一次ANR的每日會話百分比,以及過去30天和之前30天的單獨報告。還提供了不良行為閾值。

        如何修復Android vitals的應用質量問題并提高Play商店的性能

        詳細信息視圖(ANR費率頁面)顯示ANR費率隨時間變化的詳細信息,以及應用版本,活動名稱,ANR類型和Android版本的ANR。您可以按APK版本代碼,支持的設備,操作系統版本和句點過濾此數據。

        如何修復Android vitals的應用質量問題并提高Play商店的性能

        您還可以從ANR和崩潰部分獲取更多詳細信息

        如何修復Android vitals的應用質量問題并提高Play商店的性能

        ANR的常見原因是什么?

        如前所述,當app進程阻塞主線程時會發生ANR。幾乎任何原因都可能發生阻塞,但最常見的原因包括:

        • 執行磁盤或網絡I / O的主線程上這是迄今為止ANR最常見的原因。雖然大多數開發人員都同意您不應該在主線程上讀取或寫入數據到磁盤或網絡,但有時候我們都很想做到這一點。從磁盤讀取幾個字節可能不會在理想條件下導致ANR,但這絕不是一個好主意如果用戶的閃存設備較慢,該怎么辦?如果他們的設備處于同時讀寫的其他應用程序的極大壓力下,而您的應用程序在隊列中等待執行“快速”讀取操作,該怎么辦?切勿在主線程上執行I / O.
        • 在主線程上執行長計算那么內存計算呢?RAM不會受到長訪問時間的影響,較小的操作應該沒問題。但是,當您開始在循環中執行復雜計算或使用大型數據集時,您可以輕松地阻止主線程。考慮使用數百萬像素調整大圖像的大小,或者解析大塊HTML文本然后在TextView中顯示。通常,您的應用最好在后臺運行此類操作。
        • 從主線程運行同步綁定器調用另一個進程與磁盤或網絡操作類似,當跨進程邊界進行阻塞調用時,程序執行將傳遞到您無法控制的某個位置。如果其他進程繁忙怎么辦?如果需要訪問磁盤或網絡以響應您的請求怎么辦?此外,數據需要被分區和未分組以傳遞給其他進程,這需要時間。最好從后臺線程進行進程間調用。
        • 使用同步即使將繁重的操作移動到后臺線程,也需要與主線程通信以顯示進度或計算結果。多線程編程并不容易,當使用同步進行鎖定時,通常很難確保不會阻止執行。在最壞的情況下,它甚至可能導致一個死鎖,在這個死鎖中你的線程永遠等待彼此阻塞。最好避免自己設計同步,最好使用專門構建的解決方案(如Handler)將不可變數據從后臺線程傳遞回主線程。

        如何檢測ANR的原因?

        找到ANR的原因可能很棘手,以URL類為例。您是否期望URL#equals(用于確定兩個URL是否相同的方法)被阻止?那么SharedPreferences呢?如果你在后臺讀取它的值,你可以在主線程上調用getSharedPreferences嗎?在這兩種情況下,答案都是這些可能是長期阻塞操作。

        幸運的是,StrictMode可以避免發現ANR的猜測。在調試版本中使用此工具可以捕獲主線程上的意外磁盤和網絡訪問。在應用程序啟動時使用StrictMode#setThreadPolicy來自定義要檢測的內容,包括磁盤和網絡I / O,甚至是通過StrictMode#noteSlowCall在應用程序中觸發的自定義慢速調用您還可以選擇StrictMode在檢測到阻止調用時如何提醒您:通過崩潰應用程序,或記錄或顯示對話框。有關更多詳細信息,請參閱ThreadPolicy.Builder類

        一旦消除了主線程上的阻塞調用,請記住在將應用程序發布到Play商店之前關閉StrictMode。

        消除過多的喚醒和ANR將提高您的應用程序的質量和可用性,提高評級和評論,反過來,更多的安裝。通過檢查Android vitals,您可以快速輕松地找出是否存在需要解決的問題。在代碼中查找和解決這些問題并不總是那么簡單,但是有一些工具和技術可以用來有效地完成工作。

        Android vitals可以為您提供更多幫助,我將在下一篇文章中介紹更多這些功能。此外,與同事Fergus Hurley和Joel Newman一起,我將參加Google I / O 2018在5月8日星期二下午3點舉行會議“Android vitals:調試應用程序性能并獲得獎勵”如果您在那里或通過直播加入我們,了解有關Android vitals,最新Play控制臺和Android Studio工具的更多信息,以及幫助您提高應用質量的見解。

        如果你有關于Android vitals的想法,請通過使用#AskPlayDev的推文告訴我們,我們將回復@GooglePlayDev,我們會定期分享有關如何在Google Play上取得成功的新聞和提示。

        如何修復Android vitals的應用質量問題并提高Play商店的性能轉載http://www.rhcg.tw/appboke/38806.html
        標簽:網站源碼
        辽宁十一选五单双