杀死Android中的其他进程

时间:2014-08-11 14:00:59

标签: android android-activity process kill kiosk-mode

我能以编程方式结束或终止其他正在运行的进程吗?我问过我的朋友并告诉我应该使用像kiosk模式这样的东西!!

任何人都可以帮我解决这个问题..

所有的问候和感谢。

5 个答案:

答案 0 :(得分:1)

最近我正在研究同样的问题,因为我厌倦了手动关闭定期自动打开并继续在后台运行并耗尽电池的Google地图应用程序...

但我认为Android不会让你杀死任何进程而是你自己的进程。这有利于安全性,但我至少希望它们包含应用程序权限,以便程序能够在用户允许的情况下执行此操作。

我尝试了以下方法,而其中没有一种方法正在运行:

  • activityManagerObject.killBackgroundProcesses(的packageName)
  • Process.killProcess(PID)
  • Process.sendSignal(pid,Process.SIGNAL_KILL)

用户指出,自Android 2.1起,它是不可能的。见这里:https://stackoverflow.com/a/6535201/4090002

由于Android操作系统对我们的用户也有其他限制,因此用户被迫忍受愚蠢的限制,并减少了对他们采取任何行动的权利。我不知道其他移动操作系统,但这是Android的重要时刻。

答案 1 :(得分:0)

我认为您可以尝试android.os.Process.killProcess(android.os.Process.myPid());

之类的内容

但是如果你想杀死其他进程你必须拥有root权限(通常,你没有它)

答案 2 :(得分:0)

试试这段代码

杀死所有进程,但不是系统进程

// TODO clean servise

ActivityManager mActivityManager = (ActivityManager) this
        .getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> rs = mActivityManager
        .getRunningServices(500);

Intent destrIntent;
for (int i = 0; i < rs.size(); i++) {
    ActivityManager.RunningServiceInfo rsi = rs.get(i);

    if (!rsi.service.getClassName().contains("com.android")
            || !rsi.service.getPackageName().contains("com.android")) {

        android.os.Process.sendSignal(rsi.pid,
                android.os.Process.SIGNAL_KILL);
        mActivityManager.killBackgroundProcesses(rsi.service
                .getPackageName());
    }
}

答案 3 :(得分:0)

自Android 2.2(或更高版本,我不记得了)以来,您只能使用意图杀死自己的应用。要从您的应用中杀死其他进程,您必须拥有 rooted 设备,手动解析ps命令输出,获取所需的进程ID,执行su,编写{{1命令到这个管道,我们走了。我为自己的库编写了这段代码,所以这些方法是分开的,但希望你能理解:

kill

答案 4 :(得分:0)

只是为了清楚起见,这就是我对有根电话的工作方式(这意味着su命令可用于该设备):

Runtime.getRuntime().exec ("sh -c su -c kill -9 pid") 

其中pid是您要终止的应用程序的进程ID,应为数字。

请注意,这也取决于系统。在没有“ sh -c”的某些系统中,它将起作用。在某些系统中,您需要在su命令后指定uid:

su uid 

希望有帮助。

大卫