How can I programmatically force stop an Android app with Java?
如何强制停止使用Java的应用程序? 我正在尝试构建一个可以帮助清理后台进程的内存清理器。
我知道有一种方法可以杀死应用程序,但是当你进入运行列表时,即使你杀了它,应用程序仍然存在。 我尝试了很多类似的内存清理应用程序,其中只有一个可以完全强制停止应用程序,但它有很多无用的通知 - 非常烦人。
P.S。:当您转到设置 - >应用程序时,您将看到一个应用程序列表。 点击其中一个应用程序,您最终得到应用程序的信息。 有一个名为"强制停止"的按钮。 通过点击它,应用程序被杀死。 我想在我的应用程序中执行这种操作。 如何才能做到这一点?
-
你的问题缺乏足够的细节。
-
我试图附加一个屏幕截图来帮助解释,但它告诉我,我没有足够的声誉附加图片:(
-
可能重复如何使用其所有活动杀死应用程序?
-
退出应用程序的可能重复 - 这是不赞成的吗?
-
@Kishore不是真的,这是关于杀死你自己的应用程序,而不是系统应用程序。
-
是的,我想要杀死我自己的应用程序,还要杀死其他应用程序。
-
AFAIK,杀死系统应用程序,杀手必须是系统应用程序,即杀手进程需要拥有root或超级用户权限。
-
我可以杀死其他用户应用吗?
-
你可以在android框架中查看ActivityManager和lowmemorykiller代码。 这些实际上是杀死和交换进程的工作。
获取应用程序的进程ID,并终止该进程onDestroy()方法
1 2 3 4 5 6 7 8
| @Override
public void onDestroy ()
{
super. onDestroy();
int id = android. os. Process. myPid();
android. os. Process. killProcess(id );
} |
要么
1 2
| getActivity (). finish();
System. exit(0); |
如果你想从你的活动中杀死其他应用程序,那么这应该可行
您可以使用以下方式发送信号:
要彻底终止进程,建议调用:
1
| ActivityManager.killBackgroundProcesses(packageNameToKill) |
在发送信号之前。
请注意,您的应用需要拥有KILL_BACKGROUND_PROCESSES权限。 因此,在AndroidManifest.xml中,您需要包含:
1
| <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> |
-
我可以用这种方式杀死其他应用吗? 你能展示更多片段吗? 谢谢!
-
这会杀死你的应用,而不是其他应用。
-
从Android M,你无法阻止其他应用程序进程。它完全取决于Android操作系统(除非你有root访问权限)。
-
请注意,如果在该调用之后调用System.exit(0)一行,则调用#finish()几乎不会产生任何影响。 因此,如果您真的想强制退出,请在其他地方等待onDestroy()回调(例如,监听应用程序类中的生命周期事件)。 但是请注意,所有这些kill方法都非常激进,如果在创建服务时将其标记为STICKY,Process调用将重启服务。
-
据我所知,如果在任务堆栈上有多个活动时发生这种情况,Android将重新启动应用程序,并启动下一个较低的活动 - 即使执行了所有这些步骤。 换句话说,从任务堆栈的角度来看,它就好像你只对当前活动做了一个finish()。
尝试使用以下代码
1 2 3 4 5 6 7 8 9 10 11
| finish (); // for stopping Current Activity
// add this line for Removing Force Close
@Override
protected void onDestroy () {
// closing Entire Application
android. os. Process. killProcess(android. os. Process. myPid());
super. onDestroy();
}
} |
可能这个解决方案将帮助您以编程方式强制关闭应用程序