自动关闭Android中的应用程序

Luk*_*uke 9 android

我已经阅读了很多关于关闭其他应用程序的文档和其他帖子.我知道文档说Android不是这样设计的.Android希望休眠应用程序,而不是杀死进程.这是有道理的但是......我编写了一个应用程序,可以根据用户配置的系统事件自动启动其他应用程序.用户喜欢它,并希望在后续系统事件发生后关闭/终止这些应用程序.我想说的是用户要求我为他们自动化.这是我的应用程序的重点.它会自动启动其他应用程序,现在他们想要自动关闭或终止它们.很多人说这是不可能的,但确实如此.有几个任务杀手应用程序,他们做我想做的事情.我试过了

Process.killProcess(pid); 
Run Code Online (Sandbox Code Playgroud)

但这似乎并不多.在该方法上阅读doco,它说Linux Kernal仍然会强制执行权限.我甚至试图杀死所有进程,但它没有做任何事情.也许我没有正确地获得进程列表.我使用以下内容获取要杀死的进程列表

for(RunningAppProcessInfo info:activityManager.getRunningAppProcesses()){
Run Code Online (Sandbox Code Playgroud)

然后我使用Process.killProcess(info.pid); 杀死这个过程.我甚至尝试过:

activityManager.killBackgroundProcesses(String.valueOf(info.pid));
activityManager.killBackgroundProcesses(String.valueOf(info.processName));
Run Code Online (Sandbox Code Playgroud)

然后

Intent i = new Intent();
i.setComponent(new ComponentName(ProcessName,   ProcessName+".Main"));
context.stopService(i);
Run Code Online (Sandbox Code Playgroud)

任何人都可以真正回答这个问题而不是告诉我它不应该完成或者问我为什么要这样做呢?请提供代码示例或有意义的内容.

小智 4

你说的完全有可能。只需获取 ActivityManager 系统服务,然后使用 .restartPackage() (已弃用)或 .killBackgroundProcesses()。

ActivityManager activityManager = (ActivityManager) context.getSystemService("activity");
activityManager.restartPackage(packageName);
Run Code Online (Sandbox Code Playgroud)

你会需要:

<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
Run Code Online (Sandbox Code Playgroud)

  • 好吧,我终于成功了!问题是:我让计算器可见,即使您终止了该进程,Android 也不会删除活动视图。如果我先显示桌面,那么我可以杀死该应用程序。完美的测试是潘多拉。使用此应用程序,即使看不到音乐,您也可以听音乐。当我在它可见的时候杀死它时,似乎什么也没有发生。如果我先显示桌面然后终止它,音乐就会停止。 (4认同)
  • @Campiador使用以下命令回家:`Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(startMain);` 这将模拟按下主页按钮,有效隐藏所有应用程序但仍在运行 (2认同)