色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解Android JankStats的alpha版本

谷歌開發(fā)者 ? 來源:谷歌開發(fā)者 ? 作者:谷歌開發(fā)者 ? 2022-03-11 09:46 ? 次閱讀

卡頓 (名詞): 指應(yīng)用性能糟糕,可能導(dǎo)致丟幀、界面動畫不連貫和用戶體驗不佳等問題。請參閱 "不開心的用戶" 詞條。

性能問題很難調(diào)試。我們常常不清楚要從何下手、使用何種工具、用戶遇到了什么問題,以及那些問題在現(xiàn)實的設(shè)備上有何表現(xiàn)。

過去幾年間,Android 團(tuán)隊一直努力推出更多工具,用于調(diào)試各種問題,從分析啟動性能到測試具體代碼路徑,再到測試和優(yōu)化特定用例及 IDE 中的可視化分析器,各領(lǐng)域均有涉獵。所有這些工具均針對開發(fā)期間的測試設(shè)計,用于幫助您調(diào)試和修復(fù)在本地運(yùn)行時發(fā)現(xiàn)的問題。

同時,Google Play 的 Android Vitals 和 Firebase 均提供信息中心,供開發(fā)者了解其應(yīng)用在實際用戶設(shè)備上的運(yùn)行情況。

盡管如此,在實際情況中,我們?nèi)匀缓茈y發(fā)現(xiàn)應(yīng)用中可能存在的問題,尤其是用戶設(shè)備上可能出現(xiàn)的問題。這可不是您坐在座椅中用著熟悉的開發(fā)機(jī)器能碰到的問題。雖說性能信息中心可提供一定幫助,但在用戶遇到問題時,它卻未必能讓您充分了解所發(fā)生情況的詳細(xì)信息。

JankStats 應(yīng)運(yùn)而生: 這是首個專為在用戶設(shè)備上檢測及報告應(yīng)用的性能問題而構(gòu)建的 AndroidX 庫。

JankStats 是占用空間相對較小的 API,主要有三大目標(biāo): 捕獲每幀的性能信息、在用戶設(shè)備 (不僅是開發(fā)設(shè)備) 上運(yùn)行、以及在應(yīng)用出現(xiàn)性能問題時啟用檢測,并報告所發(fā)生的情況。

每幀性能

Android 平臺已提供多種方法,用于獲取幀性能數(shù)據(jù)。例如,從 API 24 開始就可以使用 FrameMetrics 獲取相關(guān)數(shù)據(jù),后續(xù)多個版本也在進(jìn)一步豐富該功能,以便為您提供更多詳細(xì)信息。如果在更早期的版本上運(yùn)行應(yīng)用,也有多種方法可供您獲取時間信息,雖說不夠準(zhǔn)確,但仍十分實用。

因此,如果您想確保自己的幀持續(xù)時間邏輯適用于所有版本,就需要在不同的 API 版本中實現(xiàn)不同的測試和報告機(jī)制。現(xiàn)在,您可以使用統(tǒng)一的 JankStats API 來實現(xiàn)這些功能。除此之外,它還提供了更多驚喜 (請繼續(xù)閱讀本文!)。

JankStats 通過提供單一 API 來報告每幀的時間,從而簡化您的工作,并會在內(nèi)部委派適當(dāng)機(jī)制 (比如 API 24 以上會委派給 FrameMetrics)。您不必關(guān)心這些數(shù)據(jù)的來源,只需讓 JankStats 告訴您完成特定事項花費(fèi)的時間,然后便可在回調(diào)中獲取相關(guān)信息。

創(chuàng)建和監(jiān)聽 JankStats 數(shù)據(jù)就是這么簡單: 只需完成創(chuàng)建,然后就可以坐下來 (好吧,是您的代碼 "坐" 下來) 監(jiān)聽。以下是 JankStats 的示例 JankLoggingActivity 中的步驟范例:

val jankFrameListener = JankStats.OnFrameListener { frameData -> // real app would do something more interesting than log this... Log.v("JankStatsSample", frameData.toString())}jankStats = JankStats.createAndTrack(   window,   Dispatchers.Default.asExecutor(),   jankFrameListener,)

此處的 Log.v() 調(diào)用僅作范例使用,并非您在應(yīng)用中應(yīng)采取的操作。在實際操作中,您可能應(yīng)匯整/儲存/上傳數(shù)據(jù),以供日后分析使用,而非將數(shù)據(jù)發(fā)布于日志中。無論如何,下面是在 API 30 模擬器上運(yùn)行時產(chǎn)生的輸出示例 (為便于閱讀,已刪除部分 logcat 的輸出內(nèi)容,并添加了空白行):

JankStats.OnFrameListener: FrameData(frameStartNanos=827233150542009,frameDurationUiNanos=27779985,frameDurationCpuNanos=31296985,isJank=false,states=[Activity:JankLoggingActivity])
JankStats.OnFrameListener: FrameData(frameStartNanos=827314067288736, frameDurationUiNanos=89903592, frameDurationCpuNanos=94582592, isJank=true, states=[RecyclerView: Dragging, Activity: JankLoggingActivity])
JankStats.OnFrameListener: FrameData(frameStartNanos=827314167288732, frameDurationUiNanos=88641926, frameDurationCpuNanos=91526926, isJank=true, states=[RecyclerView: Settling, RecyclerView: Dragging, Activity: JankLoggingActivity])
JankStats.OnFrameListener: FrameData(frameStartNanos=827314183945923, frameDurationUiNanos=4731405, frameDurationCpuNanos=8283405, isJank=false, states=[RecyclerView: Settling, Activity: JankLoggingActivity])

您可以在日志的 frameData 中看到一些有趣的內(nèi)容:

其中有部分幀帶有 isJank=true 標(biāo)記。該日志取自運(yùn)行的示例應(yīng)用 JankLoggingActivity,您可查看完整示例了解更多。該應(yīng)用會強(qiáng)制產(chǎn)生一些長幀 (沒錯,用了 Thread.sleep()!),從而讓 JankStats 判定其為卡頓。

幀的時間信息中同時包含界面和 CPU 數(shù)據(jù),但在 API 24 (FrameMetrics 被引入的版本) 之前的版本中,此信息僅包含界面持續(xù)時間。

該日志是從我在應(yīng)用中開始滑動 RecyclerView 時獲取的。當(dāng) RecyclerView 開始移動 (被 "拖動") 以及 RecyclerView 開始自由滾動 (被 "放置") 時,我們可在開始之前看到與界面狀態(tài)相關(guān)的信息 (僅列出 Activity 狀態(tài))。有關(guān)這些界面狀態(tài)的詳細(xì)信息,請閱讀下文。

真實數(shù)據(jù)

不同于最近的基準(zhǔn)庫,創(chuàng)建 JankStats 的目的是為您提供來自用戶設(shè)備的結(jié)果。能在開發(fā)機(jī)器上調(diào)試問題固然很好,但在現(xiàn)實中,用戶會根據(jù)迥異的約束條件,在不同的設(shè)備上使用您的應(yīng)用,對于這類情況,本地調(diào)試可能并不能發(fā)現(xiàn)和解決問題。

JankStats 提供 API 來檢測您的應(yīng)用,以提供您所需的性能數(shù)據(jù)和報告機(jī)制,以便您能上傳這些數(shù)據(jù)并離線進(jìn)行分析。

應(yīng)用狀態(tài)

最后 (請注意,這才是 JankStats 庫的新亮點),JankStats 提供了一種方法,可讓您了解出現(xiàn)性能問題時應(yīng)用中實際發(fā)生的情況。我們經(jīng)常聽到的抱怨是: 現(xiàn)有的工具、信息中心和方法均未能提供足夠的背景信息,不足以讓您知曉用戶實際遭遇到的性能問題。

例如,F(xiàn)rameMetrics API (在 API 24 版本中推出,JankStats 內(nèi)部也有使用) 可以告訴您繪制幀需要多長時間,而您也可從中獲取卡頓信息,但它無法讓您知曉當(dāng)時應(yīng)用中的具體情況。當(dāng)您嘗試檢測代碼,并將其與 FrameMetrics 或其他性能測量工具集成時,該問題就需要開發(fā)者自行解決。但是,除非必須要在內(nèi)部構(gòu)建這種基礎(chǔ)架構(gòu),那每個人都有許多別的工作要做。因此,卡頓問題通常得不到量化測試,而性能問題自然也無法解決。

同樣,Android Vitals 信息中心也可以告訴您,應(yīng)用存在性能問題,但無法告訴您問題發(fā)生時應(yīng)用的具體運(yùn)行情況。因此,您很難通過這些信息來知曉應(yīng)該如何處理出現(xiàn)的問題。

JankStats 推出了 PerformanceMetricsState API,這套簡單的方法可讓您通過成對的字符串告訴系統(tǒng)在任意時刻您的應(yīng)用所發(fā)生的事情。例如,您可能想知道,某個特定的 Activity 或 Fragment 在何時處于活動狀態(tài),或 RecyclerView 何時處于滾動狀態(tài)。

例如,下面是 JankStats 示例中的代碼,表明該工具如何檢測 RecyclerView,以向 JankStats 提供此信息:

val scrollListener = object : RecyclerView.OnScrollListener() { override fun onScrollStateChanged(recyclerView: RecyclerView,                                   newState: Int) {   val metricsState = metricsStateHolder?.state ?: return     when (newState) {       RecyclerView.SCROLL_STATE_DRAGGING -> {         metricsState.addState("RecyclerView", "Dragging")       }       RecyclerView.SCROLL_STATE_SETTLING -> {         metricsState.addState("RecyclerView", "Settling")       }       else -> {         metricsState.removeState("RecyclerView")       }    } }}

此狀態(tài)可在您應(yīng)用中的任何地方 (甚至從其他庫) 注入,當(dāng)其報告結(jié)果時,會被 JankStats 接收到。這樣一來,當(dāng)您從 JankStats 獲取報告時,不僅可以知道每幀里各種事件花費(fèi)的時間,還可以了解用戶在那一幀期間做了什么,這可能會是相當(dāng)有用的信息。

資源

下面這些資源可以幫助您了解有關(guān) JankStats 的更多信息:

AndroidX 項目: JankStats 位于 AndroidX 的 androidx.metrics 庫中:

文檔: 開發(fā)者網(wǎng)站提供了新的開發(fā)者指南,其中介紹了 JankStats 的用法:

示例代碼: 示例項目展示了如何將 JankStats 對象實例化并進(jìn)行偵聽,以及如何針對重要的界面狀態(tài)信息來監(jiān)測應(yīng)用:

錯誤報告: 若您對該庫有任何疑問,或是想提出 API 需求,歡迎向我們提交錯誤報告:

Alpha -> 1.0

JankStats 剛剛發(fā)布了首個 alpha 版本,這次發(fā)布的用意是: "我們認(rèn)為這個 API 和功能會對 1.0 版本的發(fā)布頗有幫助,請先試用,并和我們分享您的反饋。"

今后我們還想針對 JankStats 做其他事情,包括添加某種聚合機(jī)制,甚至與現(xiàn)有的上傳服務(wù)同步。不過,在推出首個版本之前,我們希望了解大家的使用情況,以及搜集大家想要的其他功能。我們希望這一版本在當(dāng)前的基本狀態(tài)下能對大家有所幫助。僅僅是輕松檢測并記錄界面狀態(tài)信息這個功能,應(yīng)該就可以為大家提供一些便利。

現(xiàn)在就請大家獲取并試用此版本,我們恭候大家提出的反饋。最重要的是,我們希望大家能借助 JankStats 找出并修復(fù)性能問題!您的用戶正等著您呢,別讓他們等太久了!

鍵盤、手寫筆、鼠標(biāo)、游戲手柄或其他外接設(shè)備。如果您想提高應(yīng)用在這些情況下的易用性,可以計劃支持其中一些輸入方式,如需了解更多詳情,請參閱文章:是時候為各式設(shè)備適配完善的輸入支持

除了通過觸摸進(jìn)行交互外,大屏幕設(shè)備還支持其他交互形式。設(shè)備的屏幕尺寸

原文標(biāo)題:JankStats 推出 alpha 版本

文章出處:【微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 測試
    +關(guān)注

    關(guān)注

    8

    文章

    5315

    瀏覽量

    126713
  • 設(shè)備
    +關(guān)注

    關(guān)注

    2

    文章

    4517

    瀏覽量

    70677
  • 可視化
    +關(guān)注

    關(guān)注

    1

    文章

    1195

    瀏覽量

    20956

原文標(biāo)題:JankStats 推出 alpha 版本

文章出處:【微信號:Google_Developers,微信公眾號:谷歌開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    迅為RK3588開發(fā)板支持Android13和12版本系統(tǒng)還有Debian11、Buildroot、Ubuntu20與22版本

    我們已經(jīng)在RK3588上開發(fā)了穩(wěn)定又好用的Android13和12版本系統(tǒng)Debian11、Buildroot、Ubuntu20與22版本、銀河麒麟、開放麒、統(tǒng)信系統(tǒng)、openEuler24.03系統(tǒng),內(nèi)核Linux5.10
    發(fā)表于 09-19 10:47

    谷歌Android 15 Beta 3的新功能

    從近期發(fā)布的 Beta 3 開始,Android 15 達(dá)成了平臺穩(wěn)定性里程碑版本,這意味著開發(fā)者 API 和所有面向應(yīng)用的行為都已是最終版本,您可以查閱它們并將其集成到您的應(yīng)用中,并且針對
    的頭像 發(fā)表于 09-09 15:55 ?530次閱讀

    USB4 2.0版本的重大更新

    USB版本一直很多,可以說是五花八門,但是隨著接口的日漸統(tǒng)一,USB的版本可以說減少了很多,到了USB4,只剩下USB-C接口,為何還有一個2.0版本,我們往下詳解
    的頭像 發(fā)表于 09-09 14:37 ?624次閱讀

    Allegro X 23.11 版本更新 I PCB 設(shè)計:梯形布線的分析性能提升

    的新功能及用法,助力您提升設(shè)計質(zhì)量和設(shè)計效率。點擊文末閱讀原文,收藏版本更新亮點詳解匯總頁面,持續(xù)關(guān)注版本更新!AllegroXPCBDesigner系統(tǒng)級PCB設(shè)計
    的頭像 發(fā)表于 08-10 08:12 ?890次閱讀
    Allegro X 23.11 <b class='flag-5'>版本</b>更新 I PCB 設(shè)計:梯形布線的分析性能提升

    Allegro X 23.11 版本更新 I PCB 設(shè)計:與器件關(guān)聯(lián)的動態(tài)禁布區(qū)

    的新功能及用法,助力您提升設(shè)計質(zhì)量和設(shè)計效率。點擊文末閱讀原文,收藏版本更新亮點詳解匯總頁面,持續(xù)關(guān)注版本更新!AllegroXPCBDesigner系統(tǒng)級PCB設(shè)計
    的頭像 發(fā)表于 08-03 08:12 ?745次閱讀
    Allegro X 23.11 <b class='flag-5'>版本</b>更新 I PCB 設(shè)計:與器件關(guān)聯(lián)的動態(tài)禁布區(qū)

    Allegro X 23.11 版本更新 I PCB 設(shè)計:圖紙打印和時序調(diào)整

    的新功能及用法,助力您提升設(shè)計質(zhì)量和設(shè)計效率。點擊文末閱讀原文,收藏版本更新亮點詳解匯總頁面,持續(xù)關(guān)注版本更新!AllegroXPCBDesigner系統(tǒng)級PCB設(shè)計
    的頭像 發(fā)表于 07-27 08:12 ?633次閱讀
    Allegro X 23.11 <b class='flag-5'>版本</b>更新 I PCB 設(shè)計:圖紙打印和時序調(diào)整

    迅為RK3588開發(fā)板Android13和12版本系統(tǒng)還有Debian11、Buildroot、Ubuntu20與22版本

    我們已經(jīng)在RK3588上開發(fā)了穩(wěn)定又好用的Android13和12版本系統(tǒng)Debian11、Buildroot、Ubuntu20與22版本、銀河麒麟、開放麒、統(tǒng)信系統(tǒng)、openEuler24.03系統(tǒng),內(nèi)核Linux5.10
    發(fā)表于 07-26 10:55

    測試EspTouch_Demo(android)發(fā)現(xiàn)ssid使用中文名會出現(xiàn)不能配置的情況,為什么?

    用libEsptouch_v0.3.4.5.jar這個版本的SDK發(fā)現(xiàn)同樣是中文名不能配置,英文名可以。 這可能是什么問題啊?是android版本不支持中文ssid嗎?
    發(fā)表于 07-10 06:27

    Android案例分享,基于瑞芯微RK3568國產(chǎn)平臺!

    64bit Android Studio 版本android-studio-2022.3.1.19(Windows版本Android
    的頭像 發(fā)表于 06-20 10:04 ?673次閱讀
    <b class='flag-5'>Android</b>案例分享,基于瑞芯微RK3568國產(chǎn)平臺!

    Android案例分享,基于瑞芯微RK3568國產(chǎn)平臺!

    :Ubuntu18.04.464bitAndroidStudio版本android-studio-2022.3.1.19(Windows版本An
    的頭像 發(fā)表于 06-20 08:05 ?973次閱讀
    <b class='flag-5'>Android</b>案例分享,基于瑞芯微RK3568國產(chǎn)平臺!

    Runway發(fā)布Gen-3 Alpha視頻生成模型

    專為電影和圖像內(nèi)容創(chuàng)作者提供生成式AI工具的Runway公司近日宣布,其最新的Gen-3 Alpha視頻生成模型已經(jīng)正式問世。這款模型在多方面均取得了顯著的進(jìn)步,為創(chuàng)作者們帶來了前所未有的便利和可能性。
    的頭像 發(fā)表于 06-19 09:25 ?584次閱讀

    OPPO ColorOS再度領(lǐng)跑,首批適配Android 15

    在備受矚目的2024年谷歌I/O開發(fā)者大會上,Android 15正式亮相。全球領(lǐng)先的智能手機(jī)制造商OPPO,憑借其ColorOS系統(tǒng)再次展現(xiàn)了其在軟件更新和系統(tǒng)優(yōu)化方面的卓越實力,連續(xù)六年成為首批適配Android版本的廠商
    的頭像 發(fā)表于 05-21 11:37 ?1122次閱讀

    vivo首批適配Android 15 Beta版本操作系統(tǒng)

    vivo 日前宣布,其智能手機(jī) X100 和 iQOO 12 將作為首批適配 Android 15 Beta 版本操作系統(tǒng)的機(jī)型,于部分國家和地區(qū)率先推出。
    的頭像 發(fā)表于 05-20 14:27 ?1254次閱讀

    Testin云測國內(nèi)首發(fā)Android 15開發(fā)者預(yù)覽版云真機(jī)

    Android 15來了,Testin云測助您快速搶占先機(jī)! 目前,谷歌已發(fā)布了Android?15的第一個開發(fā)者預(yù)覽版本Android 15 Developer Preview 1
    的頭像 發(fā)表于 02-24 09:33 ?943次閱讀
    Testin云測國內(nèi)首發(fā)<b class='flag-5'>Android</b> 15開發(fā)者預(yù)覽版云真機(jī)

    Android、iOS、鴻蒙多平臺框架ArkUI-X

    Android、iOS、鴻蒙多個平臺上提供生動而流暢的用戶界面體驗。 一、配套關(guān)系 表1 版本軟件和平臺配套關(guān)系 目標(biāo)平臺 項目編譯使用OS SDK版本 備注 OpenHarmony 4.0 (API
    的頭像 發(fā)表于 01-31 14:52 ?1801次閱讀
    跨<b class='flag-5'>Android</b>、iOS、鴻蒙多平臺框架ArkUI-X
    主站蜘蛛池模板: 人妻体内射精一区二区| 亚洲在线国产日韩欧美| 国内精品久久久久久久999下| xxx粗大长欧美| 无码日韩人妻精品久久蜜桃免费| 女人18毛片| 美国ZOOM动物在线观看| 久久精品熟一区二区三区| 含羞草国产亚洲精品岁国产精品| 国产午夜不卡| 国产永久免费高清在线观看 | 久久免费国产| 久久精品免视看国产| 久久精品午夜一区二区福利| 久久精品影院永久网址| 久久久久久久久久综合情日本| 久久久久毛片免费观看| 快播av种子大全| 毛片手机在线看| 欧美 亚洲 日韩 在线综合| 欧美亚洲另类热图| 久久99热在线观看7| 国产精品久久久久影院嫩草| 国产成人无码WWW免费视频在线| 91女神娇喘| 999视频在线观看| 伊人久久大香线蕉综合影| 在线观看插女生免费版| 亚洲成A人片在线观看中文不卡| 亚洲第一天堂无码专区| 亚洲欧美日韩国产手机在线| 四虎永久在线精品免费A| 无限资源网免费看| 亚洲精品久久一区二区三区四区 | chinese国语露脸videos| 草莓AV福利网站导航| 国产激情精品久久久久久碰| 国产在线中文字幕| 快穿做妓女好爽H| 秋霞电影网视频一区二区三区| 男男高h浪荡受h|