0

在一个 Android 应用程序中,我正在尝试开发该应用程序在启动时通过 ReceiveronReceive()方法中的两个函数运行命令运行一些 shell 命令,但我有两个问题:

  1. 第一个函数通过三个调用执行三个单独的命令executeCommand(),但由于在我的executeCommand()函数的代码中包含Process.waitFor(),接收器中的某些内容超时并且并不总是执行所有命令。
  2. 第二个函数命令应该在前面三个 shell 命令执行并返回结果之后执行,这不会发生。如果我删除了Process.waitFor()所有执行的命令,但是由于第一个命令还没有返回结果,所以它们的行为是错误的。

有没有办法延长等待时间?只运行一个连续的命令而不是三个单独的命令将减少总时间Process.waitFor()

4

1 回答 1

2

BroadcastReceiver 文档特别建议不要在onReceive()调用的主线程上执行长时间运行的命令。更好的解决方案是创建一个IntentService来处理 shell 命令并按顺序执行它们。这不会阻止,BroadcastReceiver甚至应该提高启动速度。

于 2013-03-18T02:47:09.720 回答