终止第三方应用程序,例如按钮"应用程序信息 - >强制停止"不

时间:2015-04-10 05:03:38

标签: android

我可以像这样终止我的申请:

android.os.Process.killProcess(android.os.Process.myPid());

我如何终止任何应用程序(或只有那些允许这样做的应用程序),就像按钮App Info -> Force stop那样?

2 个答案:

答案 0 :(得分:1)

首先,您无法终止应用程序尚未创建的进程。对于应用程序启动的进程,您可以使用

终止它们
public static final void killProcess (int pid)

Docs

如果你想杀死后台进程,你可以做

public void killBackgroundProcesses (String packageName)

Docs

但是你需要KILL_BACKGROUND_PROCESSES的许可。

AFAIK这只会杀死进程,但它不会杀死内存中的任务。因此,当应用程序重新启动时,活动堆栈/任务将从上次重新创建,除非系统本身将其用于释放资源。

所以AFAIK你永远无法以编程方式获得与App Info -> Force stop相同的效果,因为无法清除内存中的任务,只有系统可以做到这一点。

答案 1 :(得分:1)

您可以使用该代码获取Application PID。

 /**
 * Gets the process pid.
 *
 * @param processName the process name
 * @return the process pid
 */
public static int getProcessPid(String processName, Context context) {
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> procList = null;
    int result = -1;

    procList = activityManager.getRunningAppProcesses();
    for (Iterator<RunningAppProcessInfo> iterator = procList.iterator(); iterator
            .hasNext();) {
        RunningAppProcessInfo procInfo = iterator.next();
        if (procInfo.processName.equals(processName)) {
            result = procInfo.pid;
            break;
        }
    }
    return result;
}