実行中のプロセスのPIDをアンドロイドで取得する方法については、カスタムデバイス(中国語のボックス)のdalvik(バックグラウンドネイティブプロセスなど) android 2.2、それはJavaでこれを行うネイティブな方法はないようです。Android Runtime.getRuntime()。exec
私が考えることができる唯一の方法は "ps"を実行して出力を解析することですが、私は奇妙な問題に遭遇しました。
私はruntime.getRuntime()。exec( "ps")をこの非常に大文字小文字のndkコンパイルされたmplayerポートで実行すると、ランダムな時間が経過してもコマンドは返されません。
Process process = null;
process = Runtime.getRuntime().exec("ps mplayer");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()),8192);
char[] buffer = new char[8192];
StringBuffer output = new StringBuffer();
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
reader.close();
process.getErrorStream().close();
process.getOutputStream().close();
process.waitFor();
は、出力バッファのいくつかの構文解析を行うと、mplayerの出力に存在するかどうか:
は、ここでは、コードです。
これは(.execしようとすると、コードが突然動作を停止したときに、3-4時間に1時間から言って、いくつかの時間、ランダムな時間のための素晴らしい作品)
私は経由してメインスレッドで実行した場合.postDelayedで実行可能なので、何度も実行できるので、明らかにメインスレッドが壊れます。
私は別のスレッドで実行すると、私はもちろん、メインのアプリケーションスレッドをブロックしない同じ動作を取得します。
私は毎秒5秒おきに10秒ごとにチェックを同じ結果で実行しています。
奇妙なことに、私は(問題の原因が原因であるかどうかは不明ですが)execが動作していないことに気づいた、adbシェルでpsを発行すると、私は2つの実行中のアプリケーションを見ることができます。一度私が最近のものを殺すと、それは再び働き始める。
誰かに同様の問題が発生しましたか?私はそれが欠陥であるボックスのアンドロイドかどうかわからない、それはコーディングの問題(多分何かexecに関連していない)または別の方法があれば、NDKコンパイルされたバックグラウンドアプリを持っていなくて、IPCそのプロセスが実行中であるかどうかをチェックします。