0

Android アプリで開発しようとしているアプリは、起動時にいくつかのシェル コマンドを実行し、レシーバーonReceive()メソッド内の 2 つの関数を介してコマンドを実行しますが、2 つの問題があります。

  1. 最初の関数は の 3 回の呼び出しで 3 つの別個のコマンドを実行しますが、私の関数executeCommand()のコードには が含まれているため、受信側の何かがタイムアウトし、常にすべてのコマンドを実行するとは限りません。executeCommand()Process.waitFor()
  2. 2 番目の関数コマンドは、前の 3 つのシェル コマンドが実行されて結果が返された後に実行される必要がありますが、これは発生しません。すべてのコマンドを削除するとProcess.waitFor()実行されますが、最初のコマンドはまだ結果を返していないため、正しく動作しません。

待ち時間を延長する方法はありますか?3 つの別々のコマンドではなく、一連のコマンドを 1 つだけ実行すると、Process.waitFor()?

4

1 に答える 1

2

BroadcastReceiverのドキュメントでは、onReceive()呼び出しのメインスレッドで実行時間の長いコマンドを実行しないように具体的にアドバイスしています。より良い解決策はIntentService、シェル コマンドを処理して順番に実行する を作成することです。これは をブロックせず、BroadcastReceiver起動速度も向上させるはずです。

于 2013-03-18T02:47:09.720 に答える