欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

提升Flutter體驗(yàn)的方法是什么-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“提升Flutter體驗(yàn)的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“提升Flutter體驗(yàn)的方法是什么”吧!

成都創(chuàng)新互聯(lián)公司主營依蘭網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),依蘭h5成都微信小程序搭建,依蘭網(wǎng)站營銷推廣歡迎依蘭等地區(qū)企業(yè)咨詢目標(biāo)

過度的丟幀從視覺上會出現(xiàn)卡頓現(xiàn)象,體現(xiàn)在用戶滑動操作不流暢;頁面加載耗時過長容易中斷操作流程;Flutter部分exception會導(dǎo)致發(fā)生異常代碼后面的邏輯沒有走到從而造成邏輯bug甚至白屏。這些問題很容易考驗(yàn)用戶耐心,引起用戶反感。

所以我們制定以下三個指標(biāo)作為線上Flutter性能穩(wěn)定性標(biāo)準(zhǔn):

  1. 頁面滑動流暢度

  2. 頁面加載耗時(首屏?xí)r長+可交互時長)

  3. Exception率

最終目標(biāo)是讓這些數(shù)據(jù)指標(biāo)驅(qū)動Flutter用戶體驗(yàn)升級。

頁面滑動流暢度

我們先大概了解下屏幕渲染流程:CPU先把UI對象轉(zhuǎn)變GPU可以識別的信息存儲進(jìn)displaylist列表,GPU執(zhí)行繪圖指令來執(zhí)行displaylist,取出相應(yīng)的圖元信息,進(jìn)行柵格化渲染,顯示到屏幕上,這樣一個循環(huán)的過程實(shí)現(xiàn)屏幕刷新。

閑魚客戶端采用的Native、Flutter混合技術(shù)方案,Native頁面FPS監(jiān)控采用集團(tuán)高可用方案,F(xiàn)lutter頁面是否可以直接采用這套方案監(jiān)控?

普遍的FPS檢測方案Android端采用的是Choreographer.FrameCallBack,IOS采用的是CADisplayLink注冊的回調(diào),原理是類似的,在每次發(fā)出Vsync信號,并且CPU開始計(jì)算的時候執(zhí)行到對應(yīng)的回調(diào),這個時候表示屏幕開始一次刷新,計(jì)算固定時間內(nèi)屏幕渲染次數(shù)來得到fps。(這種方式只能檢測到CPU卡頓,對于GPU的卡頓是無法監(jiān)控到的)。由于這兩種方法都是在主線程做檢測處理,而Flutter的屏幕繪制是在UI TaskRunner中進(jìn)行,真正的渲染操作是在GPU TaskRunner中,關(guān)于詳細(xì)的Flutter線程問題可以參考閑魚之前的文章:深入理解Flutter引擎線程模式。

這里我們得出結(jié)論:Native的FPS檢測方法并不適用于Flutter。

Flutter官方給我們提供了 Performance Overlay作為檢測幀率工具,可否直接拿來用?

提升Flutter體驗(yàn)的方法是什么

上圖顯示了Performance Overlay模式下的幀率統(tǒng)計(jì),可以看到,F(xiàn)lutter分開計(jì)算GPU 和UI TaskRunner。UI Task Runner被Flutter Engine用于執(zhí)行Dart root isolate代碼,GPU Task Runner被用于執(zhí)行設(shè)備GPU的相關(guān)調(diào)用。通過對Flutter engine源碼分析,UI frame time是執(zhí)行window.onBeginFrame所花費(fèi)的總時間。GPU frame time是處理CPU命令轉(zhuǎn)換為GPU命令并發(fā)送給GPU所花費(fèi)的時間。

這種方式只能在debug和profile模式下開啟,沒有辦法作為線上版本的fps統(tǒng)計(jì)。但是我們可以通過這種方式獲得啟發(fā),通過監(jiān)聽Flutter頁面刷新回調(diào)方法handleBeginFrame()、handleDrawFrame()來計(jì)算實(shí)際FPS。

0

  • Future<Null> main() async {

  •  FlutterError.onError = (FlutterErrorDetails details) async {

  •    Zone.current.handleUncaughtError(details.exception, details.stack);

  •  };

  •  runZoned<Future<Null>>(() async {

  •    runApp(new HomeApp());

  •  }, onError: (error, stackTrace) async {

  •    await _reportError(error, stackTrace);

  •  });

  • }

  • 其中,F(xiàn)lutterError.onError只會捕獲Flutter framework層的error和exception,官方建議將這個方法按照自己的exception捕獲上報(bào)需求定制。在實(shí)踐過程中,我們遇到很多不會對用戶體驗(yàn)產(chǎn)生任何影響的exception會被頻繁觸發(fā),這類沒有改善意義的exception可以添加白名單過濾上報(bào)。

    02

    效果

    有了線上exception的監(jiān)控,可以及早發(fā)現(xiàn)隱患,獲取問題堆棧信息,方便定位bug,提示整體穩(wěn)定性。

到此,相信大家對“提升Flutter體驗(yàn)的方法是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

新聞標(biāo)題:提升Flutter體驗(yàn)的方法是什么-創(chuàng)新互聯(lián)
瀏覽地址:http://aaarwkj.com/article28/hogjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、App開發(fā)面包屑導(dǎo)航、商城網(wǎng)站關(guān)鍵詞優(yōu)化、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
丝袜美腿诱惑国产在线| 亚洲国产精品一区二区av| 中文字幕中文字幕久久不卡| 免费啪啪视频一区二区| 色婷婷激情一区二区三区| 日本一区二区免费高清不卡| 韩国三级福利在线观看| 亚洲ve中文字幕久久一区二区| 在线免费观看91亚洲| 18禁黄网站免费观看在线| 亚洲天堂日韩欧美在线| 91蜜臀在线视频播放| 中文字幕三级电影天堂| 国产成人拍国产亚洲精品| 日韩精品大全一区二区| 肉肉开房天天操夜夜操| 日韩视频 一区 二区| 双高干文男女主都很强| 男人天堂一区二区av| 亚洲毛片一区二区在线| 日本亚洲一区二区在线观看| 加勒比久草免费在线观看| 亚洲熟妇亚洲熟妇亚洲熟妇| 欧美日韩电影一区二区三区在线观看| 99热这里只有精品免费播放| 亚洲一区二区三区免费在线看| 亚洲国产日韩欧美一级| 国产成人精品久久一区二区三区| 亚洲国产韩国精品在线| 91九色精品视频在线观看| av成人黄色片在线播放| 人妻少妇久久中文字幕久久| 亚洲av日韩av在线不卡一区| 人人爽人人妻人人澡| 国产日本韩国三级在线| 久久国内午夜福利直播| 粉嫩极品美女国产精品| 丰满人妻少妇精品一区二区三区| 欧美精品熟妇乱黑人最大| 日韩av大片一区二区三区| 99热这里在线只有精品|