在某些设备上退出应用程序后仍保留进程

remain processes after exit application on some devices

本文关键字:应用程序 保留 进程 退出      更新时间:2023-10-16

我的应用程序有c ++代码和许多pthread。我用exit(0);关闭应用程序。之后,我列出了带有adb shell ps的运行进程。此命令显示设备上当前正在运行的进程。

输出显示仍有一些与我的应用程序相关的进程(它们的名称是我的应用程序名称)。多次运行应用程序后,这些垃圾进程数量会增加。在某些时候,设备无法响应,因为剩余内存很少。

我意识到了一些问题。当应用程序启动时,它有一个 pid,我可以在进程列表(带有 adb shell ps )上看到它。另外,我看到一些进程,他们的父进程是应用程序进程。而且,如果我退出应用程序,应用程序进程将从列表中删除,但以前的子进程仍然存在。而且,它们的父进程变为 1(我认为它是主操作系统进程或类似的东西)。

此问题发生在HTC One上。 在Samsung Note 2上不会发生。关闭应用程序后,三星上的所有子进程都会自动终止。

如何防止剩余此子进程?

我想知道为什么你没有使用fork只是使用pthread,它可以制作一个新进程??(我的Linux程序不好)

MyBe您可以在应用程序退出之前尝试代码

Runtime.getRuntime().exec("killall " + applicationName);