Android正确关闭进程

时间:2016-03-23 03:05:20

标签: java android

我正在使用这些代码在我的Android应用程序上运行screencap功能,它能够捕获screencap并将其转换为要使用的位图,但是在运行它几次之后。应用程序变慢,我不知道为什么

这些代码是否连续运行并将进程留在内存中?如果是这样,我该如何正确关闭它们呢?

Process process = Runtime.getRuntime().exec("su");
OutputStreamWriter outputStream = new OutputStreamWriter(process.getOutputStream());
outputStream.write("/system/bin/screencap -p\n");
outputStream.flush();
Bitmap screen = BitmapFactory.decodeStream(process.getInputStream());
outputStream.write("exit\n");
outputStream.flush();
outputStream.close();

1 个答案:

答案 0 :(得分:0)

如果您使用的是jdk 7,则可以使用try-with-resources方法:

Process process = Runtime.getRuntime().exec("su");
try (OutputStream out = process.getOutputStream();
     InputStream in = process.getInputStream()) {
    OutputStreamWriter outputStream = new OutputStreamWriter(out);
    outputStream.write("/system/bin/screencap -p\n");
    outputStream.flush();
    outputStream.write("exit\n");
    Bitmap screen = BitmapFactory.decodeStream(in);
}

通过将InputStreamOutputStream放在try块的括号中,两个流将在try块的末尾自动关闭。

或者您可以使用Google Guava库(这很棒,顺便说一句)。如果您需要,我可以发布该代码,但是可以在其网站上发布(https://github.com/google/guava/wiki/ClosingResourcesExplained

相关问题