如何以编程方式退出安卓应用?

2022-08-31 09:15:30

我相信这个问题已经被问过很多次了,因为我读了一些。我的客户希望我在他的应用程序中放置一个按钮,用户可以在其中单击并退出。我已经阅读了这个,发现打电话会做到这一点。但是,完成只是关闭当前正在运行的活动对吗?我有很多活动,所以在这种情况下,我必须传递每个活动的实例并完成它们,或者将每个活动都变成单例模式。finish()

我也知道可以让你进入主屏幕。好的,这不是关闭,而是后台处理该过程。那么这是有效的吗?Activity.moveTaskToBack(true)

我应该使用哪种方法完全关闭应用?上述任何方法或上述方法的任何其他方法/其他用法?


答案 1

在 API 16 中发布的 finishAffinity 方法将关闭所有正在进行的活动并关闭应用:

this.finishAffinity();

完成此活动以及当前任务中紧挨着它下方具有相同相关性的所有活动。当应用程序可以启动到另一个任务(例如,从它所理解的内容类型的ACTION_VIEW)并且用户已使用向上导航从当前任务切换到其自己的任务时,通常使用此方法。在这种情况下,如果用户已向下导航到第二个应用程序的任何其他活动,则应作为任务切换的一部分从原始任务中删除所有这些活动。

请注意,此完成操作不允许您将结果传递到上一个活动,如果您尝试这样做,将引发异常。


从 API 21 开始,您可以使用:

finishAndRemoveTask();

完成此任务中的所有活动,并将其从近期任务列表中删除。

选择:

getActivity().finish();
System.exit(0);


int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);


Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL);


Intent i = new Intent(context, LoginActivity.class);
i.putExtra(EXTRA_EXIT, true);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(i);

来源: 如何以编程方式退出安卓应用程序


希望它有帮助!祝你好运!


答案 2

实际上,每个人都在寻找通过onclick事件关闭应用程序,无论在哪里可能都有活动......

将此代码添加到 onclick 事件:

Intent homeIntent = new Intent(Intent.ACTION_MAIN);
    homeIntent.addCategory( Intent.CATEGORY_HOME );
    homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
    startActivity(homeIntent); 

推荐