中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么深入理解Flutter上的數據監控

發布時間:2021-10-13 11:40:34 來源:億速云 閱讀:123 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關怎么深入理解Flutter上的數據監控,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

前言

最近看公司Flutter項目的時候,發現想要分析數據非常的困難,不是數據缺失就是數據異常,作為一個成熟的企業來說這是非常危險的,缺少了數據就像船只在海上航行的時候沒有了方向,將會變得無所適從,所以這周花了點時間去優化。

我們要關注什么數據對于Flutter這樣的組件來說,我們需要關注的數據無非是兩項:

性能數據  異常數據

這兩項數據是我們監控整個Flutter應用是否優秀的最基礎也是最重要的指標。性能數據能夠幫我們分析出Flutter對比Native,RN,Weex等框架是否有優勢,而異常數據則是反應了項目的健康程度,很多時候在項目開發和測試的過程中問題沒有暴露,而是在線上才會有問題,如果沒有異常監控,應用就很難具備從錯誤中快速恢復的能力。

性能數據

對于性能數據,我們可以拆分成以下兩個點:

渲染時長  頁面幀率

對于頁面幀率,目前我還沒有什么仔細思考過,這一塊的內容我會放在之后的文章中介紹。

對于渲染時長,我們可以通過Flutter給出的系統回調在監控頁面第一幀的渲染時間。Android為以下方法:

getFlutterView().addFirstFrameListener(new FlutterView.FirstFrameListener() { @Override public void onFirstFrame() {  //第一幀渲染回調 }});

iOS也差不多,具體大家可以參考網上的例子。

異常數據

對于異常數據,我們可以拆分成以下幾個點:

頁面的打開次數  頁面發生異常的次數  Framework的異常次數  crash次數

統計頁面的打開次數是為了讓我們更好的觀測整個大盤的數據,并且以它作為分母,得出我們整個Flutter項目的渲染成功率,這是很重要的一個指標。

但是我們想一想,在Flutter中使用navigator打開一個頁面,如果我們不做任何處理的話,是無法感知到一個Flutter頁面被打開了的,所以我們需要通過注冊nevigator的observer去監聽頁面的打開與關閉:

Widget build(BuildContext context) { return new MaterialApp( navigatorObservers: [new MyNavigatorObserver()], home: new Scaffold(  body: new MyPage(), ), );}

在MyNavigatorObserver中通過didPush方法去上報頁面打開的埋點。

有了頁面的打開數據之后,我們接下去需要統計的是異常的發生次數,而在Flutter中異常可以大致分為三類:

  1. Dart異常  Framework異常  crash

對于Dart異常,我們可以通過全局的onError函數去捕獲:

runZoned<Future<Null>>(() async {runApp(new MyApp());}, onError-: (error, stackTrace) async { //監聽DartError});

但是這里的回調是只要有Dart層的error就會觸發,這樣就帶來一個問題:許多不影響用戶體驗,無關緊要的error都會被我們統計到,從而影響我們數據的準確性。針對于上面這個問題,我的想法是既然要統計的是影響用戶的error,那我們可以借助Flutter本身的特性,我們知道Flutter在build期間發生了異常會展示一個紅屏的widget,這個widget是ErrorWidget,我們只需要hook這個widget的生成,在該widget展示的時候上報我們需要的埋點就可以了:

ErrorWidget.builder = (FlutterErrorDetails flutterErrorDetails) { //統計Dart error return ErrorWidget(flutterErrorDetails.exception);};

甚至我們還可以在這里重寫這個ErrorWidget,去展示我們自定義的錯誤頁。

說完了Dart異常,我們接著去處理Framework異常。這個異常比較特殊,應該是Android獨有的,因為在Android中我們需要加載動態庫去完成Flutter的初始化,所以這里我們可以捕獲動態庫的加載,如果有異常發生或者加載失敗,則算作為Framework層異常。

最后一個則是運行時的crash,對于這部分異常,我們需要做的就是進行堆棧的捕獲,并且判斷是否是Flutter引起的crash,如果是則上報埋點。


通過上面的幾個數據統計,我們可以計算出Flutter應用的以下幾個數據:

頁面渲染時間  頁面幀率  頁面打開次數  頁面異常率  頁面崩潰率

有了以上的幾個數據,我們就可以根據它們來進行業務上的優化,做到百尺竿頭更進一步。

關于怎么深入理解Flutter上的數據監控就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平陆县| 新晃| 崇阳县| 房产| 巨鹿县| 宾阳县| 巴林右旗| 仙游县| 玉山县| 大关县| 英山县| 凤庆县| 石景山区| 迁西县| 广河县| 贵定县| 崇信县| 磴口县| 那曲县| 邵阳市| 镶黄旗| 呼图壁县| 冀州市| 乐业县| 开阳县| 镇安县| 延边| 湟源县| 淳化县| 班玛县| 江山市| 卢湾区| 四子王旗| 固原市| 三台县| 重庆市| 怀来县| 定州市| 尼勒克县| 定结县| 河曲县|