トレースビューを使用して、いくつかの非同期イベントのパフォーマンスを測定したいと思います。非同期イベントは、以下のコードに似たコールバックで私に渡されます。すべての非同期イベントが「onStartEvent」コールで始まり、「onStopEvent」コールで終了しますandroid traceview非同期イベント
interface EventCallback {
void onStartEvent(String name);
void onStopEvent(String name);
}
。
イベントごとにトレースファイルを作成したいと思います。私のここでの読解(http://developer.android.com/tools/debugging/debugging-tracing.html#creatingtracefiles)から、呼び出しの順序付けは順序付けのような「スタック」で「構造化」されなければならないので、非同期イベントをトレースすることはできません。したがって、 "Debug.stopMethodTracing()"の呼び出しは、常に "Debug.startMethodTracing(" calc ");"への最新の呼び出しに適用されます。
したがって、次の順序でコールバックを受信した場合。
onStartEvent(A)
onStartEvent(B)
onStopEvent(A)
onStopEvent(B)
Debug.startMethodTracing(」と解釈されます
A ");
Debug.startMethodTracing( "B");
Debug.stopMethodTracing(); // "A"ではなく "B"に適用されます
Debug.stopMethodTracing(); // "B"ではなく "A"に適用されます
私は欲しいことをやろうとしていますか?つまり、非構造化された非同期イベントをトレースしますか?
ありがとうございました。私はパフォーマンスをキャプチャすることに興味があります。私は、特定のイベントが他のイベントより長くかかることに気づいており、どれくらい時間がかかるのかだけでなく、問題の原因となっているものを把握したいと考えています。私はsystraceを試みましたが、トレースビューから必要な情報を私に与えるようには見えませんでした。 – Jon
私は、すべてのイベントが同じ時間に行われることを期待していますが、何らかの理由で、一部のイベントにはかなりの時間がかかります。 "systrace"にトレースをロードしたとき、 "traceview"のようなプロファイリング情報が表示されませんでした。代わりに、私はそれぞれの「セクション」のタイムラインを描画し、どのようなシステムアクティビティが発生したかを表示します。 – Jon
traceviewは、1つのアプリで各メソッドがどれくらい時間がかかるかを示します。 systraceは、どのスレッドがどのCPUコアでスケジュールされているかなど、システム全体で起こっていることをすべて表示します(例えば、http://bigflake.com/systrace/を参照)。 「長い」イベントと「短いイベント」をキャプチャした場合は、2つのイベントを比較して、遅いイベントが他のプロセスによって中断されたかどうか、または実行に長時間かかったかどうかを確認できます。プログラムのどの部分が常に使い果たされているのかを知りたいときにはtraceviewが使いやすくなりますが、systraceを使うとシステムをより深く見ることができます。 – fadden