我正在尝试使用 killBackgroundProcesses() 重新启动与其他应用程序相关的几个进程。我添加了正确的使用权限,并且运行系统在2.2以上。我要重新启动的应用程序在其清单中定义了几个进程,例如:
<receiver android:name=".remote.abcReceiver" android:process=":sub_process_a">
<receiver android:name=".remote.defReceiver" android:process=":sub_process_b">
因此,此应用程序中运行了三个与“com.example.restartme”等相同包相关的进程
我正在使用以下代码:
public static void killer() {
ActivityManager am = (ActivityManager)AppContext.getContext().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> list= am.getRunningAppProcesses();
for (int i = 0; i < list.size(); i++) {
ActivityManager.RunningAppProcessInfo apinfo = list.get(i);
String tpName = apinfo.processName;
if (tpName.contains("com.example.restartme"){
String[] pkgList = apinfo.pkgList;
Process.killProcess(apinfo.pid);
// Process.killProcess(apinfo.pid);
for (int j = 0; j < pkgList.length; j++) {
am.killBackgroundProcesses(pkgList[j]);
LogUtil.i("ActivityManager", "Killing process package:"
+ pkgList[j]);
}
}
}
}
从 logcat 我可以看到“Killing process package:com.example.restartme”被打印了 3 次,但是当我使用 ps 检查进程时,我可以看到只有主进程被杀死并重新启动,但两个子进程“com.example .restartme:sub_process_a" 和 "com.example.restartme:sub_process_b" 保持不变,没有任何变化。
有人遇到过这个问题吗?提前致谢。