アプリを起動し、Androidで起動時間を計算するための最良の方法は何ですか(コードを使用して実行できる場合は、より良い方法です)
5 に答える
うーん-まず、より正確に言うと、Androidではアプリケーションではなくアクティビティを開始することを指摘しておく必要があります。
したがって、アプリケーションへのエントリポイントは、LAUNCHインテントを処理するアクティビティであるため、質問を「アクティビティの起動時間を測定する方法」と解釈できます。
このために、ここでアクティビティのライフサイクルを確認することをお勧めします:https ://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle 。
そこにある素敵なグラフを見ると、起動時間は本質的に、、およびで費やされた時間であることがonCreate()
わかりonStart()
ますonResume()
。
それを測定するには、traceviewを使用することをお勧めします。これにより、時間を費やした場所が詳細に表示されます。Debug.startMethodTracing("startUp");
を使用してトレースを開始し、withonCreate()
の最後でトレースを終了onResume()
しDebug.stopMethodTracing();
ます。
インスタンスごとに1回だけ呼び出されるため、stopメソッドを2回呼び出すため、このアクティビティがバックグラウンドで実行される場合に備えonCreate()
て、複数回の呼び出しについて心配する必要はありません。これは害ではありません。onResume()
楽しんでください-私はtraceviewの可能性がとても好きです!
それを速くするために、私はlogcatを使用します、次のようなものです:
Log.d("tag", "starting");
/* code goes here */
Log.d("tag", "finished");
もっと大きなことをしたい場合は、Traceviewを試してください。
次のような自動ログがあります
system_process I/ActivityManager﹕ Displayed com.android.vending/com.google.android.finsky.activities.MainActivity: +549ms
ユーザーがアプリを入力してからアプリまでのアプリの起動時間を表示するには、ユーザーとさらに対話する準備ができています。これはActivityManagerからのものです。
また、ログを使用してonCreate()からonResumeまでの時間を測定することも良い方法です。
あなたはここで答えを見つけることができます-
この情報は、APIバージョン19以降のデフォルトでLogcatにログオンします。重要なのは、適切な場所でそれを探すことです-
コマンドラインまたは端末からlogcat出力を追跡している場合、経過時間を見つけるのは簡単です。Android Studioで経過時間を見つけるには、logcatビューでフィルターを無効にする必要があります。アプリ自体ではなくシステムサーバーがこのログを提供するため、フィルターを無効にする必要があります。
完全を期すために、ドキュメントの例を次に示します。
ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms
抜粋はドキュメントからのものです。
上記の回答の範囲で、プロファイリング中にJITがオフになっているため、Traceviewがリアルタイムを提供できないことに注意してください。Traceviewは、ソースのコードの実行時間を監視するための役に立たないツールです。(Traceviewは、startMethodTracing()およびstopMethodTracing()でDebugクラスを使用して前述したように、スタックトレースのみをチェックするための優れたツールです)。
systraceを使用することをお勧めします(たとえば、Eclipseプラグインを介して)。これは、実行のリアルタイム(および他の多くの機能)を計算するための最良のツールです。
詳細については、http: //developer.android.com/tools/debugging/systrace.htmlをご覧ください。
また、systraceが機能しない場合があることに注意してください(FSマッピングによって異なります)。
正しい「debugfs」がマウントされた状態で「system\core \ rootdir\init.rc」をチェックする必要があります。次のようになります:'mount debugfs / sys / kernel / debug / sys / kernel / debug'