Android の最適化が停止する

カートンの定義

Vsync サイクル (60HZ 画面で 16.6ms) 内の場合、最後のフレーム表示全体の実行順序に従って、アプリケーション UI スレッドの描画、RenderThread スレッドのレンダリング、SurfaceFlinger/HWC のレイヤー構成、および最終画面 これらのアクションがすべて完了していない場合、前のフレームの内容が画面に表示され、つまりフレームがドロップされ、人間の肉眼では画像がフリーズしたように感じる可能性があることを示しています。

Caton Monitoring
オフライン監視ツール

BlockCanary: 动态检测消息执行耗时。

メッセージメカニズムに基づいて、ルーパーにプリンターを設定し、ディスパッチャーから終了までの動作を監視し、時間のかかるしきい値を満たすためにスタックとデバイスの情報をダンプし、滞った情報を通知の形式でポップアップ表示します。分析用に。
ここに画像の説明を挿入2 つの主要な手順は、メッセージを配布するために msg.target.dispatchMessage(msg) を呼び出す前の時間 T1 を記録することと、メッセージを配布するために msg.target.dispatchMessage(msg) を呼び出した後の時間 T2 を記録することです。設定 ストールしきい値は、現在のメソッド呼び出しスタックを出力し、他の関連するプロンプトまたは出力ログを表示します。blockcanary は、
Loop メカニズムを最大限に活用し、MainLooper のループ メソッドでdispatchMessage を実行する前後にプリンターの println を実行して出力します。 、プリンターのセットアップ方法を提供します。印刷前後の時間差を解析し、閾値と比較することで固着かどうかを判定します。

AppBlockCanaryContext を作成します。

class AppBlockCanaryContext : BlockCanaryContext() {
    
    
}

アプリケーションで blockCanary を初期化します。

BlockCanary.install(this, AppBlockCanaryContext()).start()

BlockCanary は、フリーズが発生したときにさまざまな情報 (MonitorEnv の getConfigBlockThreshold で設定) を記録し、構成ディレクトリ内のファイルに出力し、メッセージ バー通知をポップアップ表示します (閉じることもできます)。

ダンプ情報には次のものが含まれます。

基本情報: インストールパッケージのラベル、モデル、API レベル、uid、CPU コアの数、プロセス名、メモリ、バージョン番号など。 時間のかかる情報: 実際の所要時間、メインスレッドクロックの所要時間、フリーズ開始時間、
および終了時刻
CPU 情報: 期間中に CPU がビジーかどうか、期間中のシステム CPU/アプリケーション CPU の比率、
および CPU 使用率に対する I/O の比率。

Didi Dokit にアクセス
https://xingyun.xiaojukeji.com/docs/dokit#/intro
ここに画像の説明を挿入フレーム レート検出: フレーム レート情報により波形表示機能が提供され、フレーム レート監視の傾向がより明確になります。

ここに画像の説明を挿入CPU検出:CPU使用率情報は波形グラフ表示機能を提供し、CPU監視の傾向をより鮮明にします。

ここに画像の説明を挿入Caton の検出: アプリ開発を行っていると、無視されることが多い Caton の状況に遭遇することがありますが、Caton が再出現する可能性は非常に低いです。フリーズ関数は、アプリで発生したフリーズを記録し、アプリでフリーズが発生した瞬間をロックし、対応するコード呼び出しスタックを出力するのに役立ちます。
ここに画像の説明を挿入オンライン監視ツール
https://www.tingyun.com/tingyun-apm

基調講演 Tingyun APM (アプリケーション パフォーマンス管理) 製品は、コード レベルのパフォーマンス監視を提供し、障害を迅速に特定できます。また、OpenTelemetry フレームワークと互換性があり、完全な収集を実現し、マイクロサービス アーキテクチャの下でアプリケーション パフォーマンスの監視とガバナンスをサポートします。

一般的なワークフロー:
1. まずクライアント (Android、iOS、Web など
)でデータを収集し
、次にユーザーが使用できるようにデータを視覚化します。

Android APM の原理は実際には非常にシンプルで、次の一文に要約できます。

パッケージ化の原則によれば、クラスを dex に変換するプロセスで、gradle 変換 API を呼び出してクラス ファイルを走査し、Javassist、ASM、およびその他のフレームワークでバイトコードを変更し、独自のコードを挿入してパフォーマンス データ統計を実現します。上記のプロセスはすべてコンパイル時に完了します。

おすすめ

転載: blog.csdn.net/qq_24252589/article/details/131343448