如何使用进程ID退出所选运行的应用程序

时间:2014-02-11 13:55:53

标签: android

我正在使用此代码停止Android手机中选定的正在运行的应用程序:

Button view = (Button)findViewById(R.id.button1);
view.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){

String appname = getIntent().getExtras().getString("appname");
String pname=appname.split("\n")[3];
int id=Integer.parseInt(pname);
finish();
android.os.Process.killProcess(id);

Id是正确的,但此代码无效......任何帮助? 有没有其他代码可以通过使用他们的id来杀死进程?

3 个答案:

答案 0 :(得分:2)

如果您查看Android API for Kill Process,则说明以下内容:

  

使用给定的PID终止进程。请注意,尽管此API允许我们根据其PID请求终止任何进程,但内核仍将对您实际可以杀死的PID施加标准限制。通常,这意味着只有运行调用者的包/应用程序的进程以及该应用程序创建的任何其他进程;共享一个共同UID的软件包也可以杀死彼此的进程。

这意味着除了您的应用包所在的应用之外,您无法杀死其他应用。

这个答案解释了为什么会这样以及如何运作:https://stackoverflow.com/a/7560009/1306012

答案 1 :(得分:1)

您需要要杀死的应用程序的包名称(例如com.facebook.katana),然后调用

ActivityManager.killBackgroundProcesses(packageName);
//for example: kill the facebook app
//ActivityManager.killBackgroundProcesses("com.facebook.katana);

但是,您需要在清单中定义权限KILL_BACKGROUND_PROCESSES

答案 2 :(得分:0)

你可以使用

ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> services = manager.getRunningAppProcesses();
String service1name = service[1].processName;

您可以获取所有正在运行的进程的程序包名称,检查要杀死的程序包,然后选择

process get process id by service.pid.

并致电

android.os.Process.killProcess(service.pid);