Android杀死后台进程并关闭应用程序

时间:2015-06-05 22:47:06

标签: android process kill-process

我目前有两个应用程序。

App A有一个现有应用程序列表,您可以单击并打开它们。包括哪个是App B.现在我想只运行App B一段时间~30分钟。

有没有办法自动关闭App B并重新打开App A?我想完全关闭App B.有点像你按下Android上的软按钮并通过向左/向右滑动关闭应用程序。

我尝试过使用KillBAckgroundProcess和killProcess,但它并没有完全模拟应用程序的“向左/向右滑动”。我已经看过堆栈溢出的其他问题,但是没有人能够以这种特定的方式解决这个问题。

示例代码:

    //process
        for (ActivityManager.RunningAppProcessInfo process : processes) {
            if(process.processName.equals("com.example.adam2392.helloworld")) {
                processToKill = process.processName;
                processId = process.pid;
            }
        }

        //packages
        for (ApplicationInfo packageInfo : packages) {
            if (packageInfo.packageName.equals("com.example.adam2392.helloworld")) {
                packageToKill = packageInfo.packageName;
            }
        }

           am.killBackgroundProcesses(packageToKill);
            android.os.Process.killProcess(processId);

1 个答案:

答案 0 :(得分:0)

我相信对你的情况更有效的方法是在App B的onStart()或onCreate()方法中设置一个警报,该方法在30分钟后熄灭并运行你需要它运行的任何代码来终止进程然后终止App B.我自己从未这样做过,但this link有一个很好的教程,关于在Android中使用Alarms安排应用程序做某事。对于您的情况,您很可能会想要使用

    AlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
           SystemClock.elapsedRealtime() + 60 * 1000, PendingIntent) 

作为警报的触发器,因为App B可能没有理由在30分钟后开始关机过程。

至于关闭应用程序,我相信这应该对你有用:

public void killApp() {
        Intent goHomeIntent = new Intent(Intent.ACTION_MAIN);
        goHomeIntent.addCategory(Intent.CATEGORY_HOME);
        goHomeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        startActivity(goHomeIntent);
        finish();
}

这可能并不像你想要的那么强大,但通常你想让Android在关闭后自行决定终止应用程序。