我有 Android 应用程序,在服务启动时实现以下代码:
...
Process process = Runtime.getRuntime().exec("logcat -v time -s " + arg);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
...
正如你所看到的,我启动了 logcat 进程来监听日志。
不幸的是,停止服务不会停止 logcat,在几次启动后我得到:
app_125 4782 144 137124 30584 ffffffff 00000000 S com.wefi.agnt.ui
app_125 4796 4782 1028 592 ffffffff 00000000 S logcat
app_125 4839 4782 1076 640 ffffffff 00000000 S logcat
app_125 4842 4782 952 516 ffffffff 00000000 S logcat
app_125 4845 4782 896 460 ffffffff 00000000 S logcat
app_125 4848 4782 900 464 ffffffff 00000000 S logcat
app_125 4851 4782 876 440 ffffffff 00000000 S logcat
shell 4852 171 788 336 c00cc7e4 afd0c78c S /system/bin/sh
shell 4853 4852 944 332 00000000 afd0b83c R ps
app_123 11189 144 114484 18908 ffffffff 00000000 S com.mspot.android.moviesClub.att
... logcat 进程列表。我怎样才能杀死他们?
有任何想法吗
既然你有一个句柄Process
例如,你应该能够使用process.destroy()
当您停止服务时。 Logcat 进程独立于您的应用程序运行,因此它们将在您的应用程序退出后继续运行Service
除非您终止它们,否则将停止运行。
如果您只想在测试应用程序时清理设备上的进程,您可以运行adb shell
在设备上获取 shell 提示符,然后使用kill <PID>
终止一个进程。
EDIT:
The Process
文档还指定您应该使用ProcessBuilder
设置并运行该流程:
ProcessBuilder pb = new ProcessBuilder("logcat", "-v", "time", "-s", arg);
pb.redirectErrorStream(true);
Process process = pb.start();
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)