まず、同じ記事は次のように述べています。
親は紫色の背景で、子供は黄色の背景で表示されます。
したがって、 LoadListener.nativeFinished は親関数であり、その下にあるすべてのインデントされた行はchildren、または親が呼び出した関数です。
プロファイル パネル
以下は、記事のプロファイル パネルのクリップです。
表の最後の列には、このメソッドの呼び出し数と再帰呼び出しの数が表示されます。
最初の行 (親) の最後の列は、この関数に対して行われた呼び出しと再帰呼び出しの数を示します。プラス記号 ( 14+14 ) で区切られた 14 回の反復呼び出しと 0 回の再帰呼び出しです。
記事の著者が誤っていくつかの単語を入力したため、次の行が少し混乱していると思います。
最後の列は、そのメソッドに対して行われた呼び出しの総数のうちの呼び出しの数を示しています。
親の下の背景が黄色の子行では、最後の列は実際には Calls+Rec を示していません。表記の変更に注意してください。プラス記号の構文に対して分数が使用されています。LoadListener.tearDown の場合、 14/14 は、 LoadListener.tearDownが親関数によって 14 回呼び出されたことを示します。LoadListener.tearDown 関数は、このトレース内で合計14 回呼び出されたため、LoadListener.nativeFinished は、このトレースで LoadListener.tearDown を呼び出した唯一の関数です。
別の行を見てみましょう。(子) 関数 View.invalidate の最後の列の値は 2413/2853 です。これは、View.invalidate が 2413 回繰り返し呼び出され、2853 回再帰的に呼び出されたという意味ではありません。代わりに、親関数 LoadListener.nativeFinished が View.invalidate を 2413 回呼び出したことを意味します。
行 6 を見ると、View.invalidate が 2853 回繰り返し呼び出され、再帰的に 0 回呼び出されていることがわかります。したがって、親関数 LoadListener.nativeFinished は、このトレース内で LoadListener.tearDown を呼び出した唯一の関数です。
タイムライン パネル
記事のタイムライン パネルのクリップを次に示します。
同記事より、
最初の行の下の細い線は、選択したメソッドへのすべての呼び出しの範囲 (開始から終了まで) を示しています。
メイン スレッドの強調表示されたセクションのすぐ下にある、水平方向に伸びるブレースのような細いピンクの線に注目してください。一番左のピンクのブレースは非常に短いです。これらは、比較的迅速に終了した LoadListener.nativeFinished への 13/14 呼び出しを表します。最後のブレース (最も右にあるブレース) は、他のブレースよりもかなり長いです。これは、「異常に時間がかかった」LoadListener.nativeFinished の呼び出しです。