Runtime.exec
プロセスを返すコードを呼び出します。プロセスがまだ終了していない場合、入力ストリームからのデータの読み取りは意味がありません。だから私は追加しましたProcess.waitFor
。
呼び出しスレッド (プロセス/アクティビティ メソッド) はスリープしますか? または、CPUを消費しますか。
が適切に実装されている場合waitfor
、プロセスが完了するまでブロックするシステム コールを使用するため、サイクルを消費することはありません。
呼び出しスレッド (プロセス/アクティビティ メソッド) はスリープしますか? または、CPUを消費しますか。
スレッド スケジューラはProcess.waitFor()
、プロセスが終了するまでスレッドの呼び出しを中断します。
CPU は消費されません。(または、厳密に言えば、スレッド自体によって CPU が消費されることはありません。スケジューラは、スレッドを「起動」する必要があるときに少量の CPU を消費する場合があり、理論的には CPU が他の方法で消費される可能性があります。 ... スレッド スケジューラと OS の実装によって異なります。)
waitfor が返されるまで、アクティビティも中断されますか?
waitFor
いいえ。ブロックされている/「スリープ状態」になっているのは、呼び出したスレッドだけです。アクティビティに他のスレッドがあると仮定すると、これによって直接影響を受けることはありません。
service と acitvity は同じ Android プロセスの一部であるためです。
それは関係ありません。「スリープ」するのは単一のスレッドです...アクティビティやサービス全体ではありません。