2017-06-27 3 views
0

、我々はこのように、現在のスレッドの時間にアクセスすることができます:アンドロイド(すなわち、のDalvik VM)での現在のスレッドの時間を取得するための同等の方法論であるAndroidでスレッド固有の時刻を測定するにはどうすればよいですか?標準JVM(例えば、バージョン1.8)では

ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime(); 

何。

+0

CPU時間を定義します。 CPUが起動してから時間がかかりますか、時間が経過していますか?また、どのレベルの精度をお探しですか? –

+0

また、標準javaでは、currentThreadCpuTimeがサポートされているとはお約束がありません。 –

+0

Androidでメソッドの実行時間をプロファイルしたいと思います。私がSystem.nanoTime()で時間を測定すると(例えば、t1 = System.nanoTime(); methodCall(); timeDiff = System.nanoTime() - t1;)、他のタイミング測定値他のスレッド実行時間)が計算された時間差に含まれます。だから、私はちょうどこの特定のスレッドの実行時間を計算したい。私が知る限り、標準のJavaでは、getCurrentThreadCpuTime()を使用することができます。しかし、私はAndroidでこれを行う方法を知らない。 – cagryInside

答えて

0

だから、私はアンドロイドでこの解決策が見つかりました:この方法その

SystemClock.currentThreadTimeMillis(); 

Android documentation状態を、現在のスレッドで実行されている

を返します(ミリ秒)。

0

私はJava APIのそのような同等物に精通していません。

Java APIを超えて考えると... topから有用な情報を収集できますか?

top -tには、レポートにスレッド固有の情報が含まれているようです。ここでの結果は私のデバイスのいずれかで実行されているからです:

enter image description here

がスレッドとCPU使用率データが利用可能があるように見えます。

この出力へのアクセスには、入力ストリーム処理のいくつかの基本的な形式が関係します。

try { 
    final String cmd = "top -t" 

    final Process ps = Runtime.getRuntime().exec(cmd); 
    ps.waitFor(); 

    final InputStream instream = ps.getInputStream(); 

    ... 

} catch(Throwable t) { /* handle errors */ } 
} finally { /* clean-up */ } 
関連する問題