I have Android application that on Service start implement followed code:
...
Process process = Runtime.getRuntime().exec("logcat -v time -s " + arg);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
...
As you see I start logcat process to listen on logs.
Unfortunately, the stop service doesn’t stop logcat and after several launches i get:
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
… list of logcat processes. How can I kill them?
Any ideas
Since you have a handle on the
Processinstance, you should be able to useprocess.destroy()when you stop your service. The Logcat processes are running independently of your app, so they will continue running after your app’sServicestops running unless you terminate them.If you just want to clean up the processes on your device while testing the app, you can run
adb shellto get a shell prompt on the device, and then usekill <PID>to terminate a process.EDIT:
The
Processdocumentation also specifies that you should useProcessBuilderto set up and run the process: