我在应用程序中观察到非常奇怪的行为。
我的应用程序具有一项服务和一项活动,在我的应用程序的服务部分中,我需要执行LogCat命令,该命令会将其输出转储到存储在设备SD卡中的文本文件中。
为了在我的服务中运行LogCat命令,我使用了以下代码:
Process p = Runtime.getRuntime().exec("logcat -v time -f /mnt/sdcard/log.txt &");
上面的代码在后台运行,到目前为止,我已经实现了所需的功能。
但是当我从设备上卸载应用程序后,以上命令甚至仍在运行。
SD卡中的log.txt文件不断增加。
我已经检查了“应用程序-> ManageApplications-> RunningServices”,但是我的服务没有运行。
卸载应用程序时,请帮助我如何停止后台进程。
这个问题很奇怪,但是正在发生。
仅当我重新启动设备后,这些症状才消失。
最佳答案
您正在启动一个新流程,因此它根本不与您当前的流程绑定。当您的应用程序被杀死时,它不会被杀死。我在这里只知道两个选择:
1)使用-d运行logcat(我相信),当到达缓冲区末尾时它将退出。默认情况下,Logcat一直运行到关闭为止,如果只希望转储日志,则应使用-d。
2)如果您不希望转储,但希望其继续流传输到文件,则没有清除它的干净方法。我知道的唯一方法是执行ps,然后读取控制台缓冲区并进行解析,以查找logcat进程的pid,然后使用Process.killProcess终止该进程。
关于android - 进程p = Runtime.getRuntime()。exec()正在运行,即使我卸载了应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7331124/