在Android中,我可以使用 Process.killProcess(pid)来终止我的进程。
但是如果我在Manifest中使用 android:process =“com.some.name”定义了我的应用程序中的多个主要进程,它会杀死所有这些进程,还是只杀死所有进程打电话了?
答案 0 :(得分:1)
如果您真的需要杀死所有应用程序进程,这可能会有所帮助。
public static void killAppProcesses(Context context) {
Log.i(TAG, "killAppProcesses; ");
int myPid = Process.myPid();
ActivityManager activityManager = (ActivityManager)
context.getSystemService(Context.ACTIVITY_SERVICE);
if (activityManager != null) {
List<ActivityManager.RunningAppProcessInfo> processInfos =
activityManager.getRunningAppProcesses();
if (processInfos != null) {
String packageName = context.getPackageName();
for (ActivityManager.RunningAppProcessInfo processInfo : processInfos) {
if (processInfo.pid != myPid) { // Current process will be killed last
if (processInfo.pkgList != null) {
List<String> packageNames = Arrays.asList(processInfo.pkgList);
if (packageNames.contains(packageName)) {
Log.i(TAG, "killAppProcesses; killing process: " + processInfo.pid);
Process.killProcess(processInfo.pid);
}
}
}
}
}
}
Log.i(TAG, "killAppProcesses; killing my process: " + myPid);
Process.killProcess(myPid);
}
答案 1 :(得分:0)
来自docs Process.killProcess(pid)
使用给定的PID终止进程。请注意,尽管此API允许 我们要求基于其PID来杀死任何进程,内核会 仍然对您实际能够使用的PID施加标准限制 要杀了通常,这意味着只有运行调用者的进程 包/应用程序以及该应用程序创建的任何其他进程; 共享一个普通UID的软件包也可以互相杀死 过程
如果您杀死主要进程,其他人将成为Orphan process