我有一个摆动计时器,该计时器每30秒运行一次,它调用一种方法,在该方法中搜索从列表中获取的一些特定应用程序的PID。
这是所调用方法中的代码。
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec("tasklist");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String inputLine = "";
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
for (int i = 0; i < runningAppList.size(); i++) {
if (inputLine.contains(runningAppList.get(i).getExecutableName())) {
appPIDNumber = inputLine.substring(28, 35).trim();
break;
} else {
appPIDNumber = "";
}
}
}
in.close();
} catch (IOException e) {
LoggingUtils.LogExceptions(LoggingConstants.ERROR, e.toString());
}
因此,如果我的应用程序正在运行并且我启动了该应用程序,我将获得PID,但是当我关闭该应用程序时,它仍然显示PID,并且不会将其清除为“”;我知道我缺少一些小东西。
谢谢。
最佳答案
我认为是因为runningAppList
。如果应用程序关闭,则该列表可能为空,因此将不执行“ while”循环,并且变量appPIDNumber
不会设置为空。
第二种选择是,在关闭应用程序后,r.exec("tasklist")
不包含任何行。
无论如何,似乎您必须在循环之前将appPIDNumber
设置为空。