java app退出登录_java-如何以编程方式退出Android应用程序?

java-如何以编程方式退出Android应用程序?

我确定已经多次询问了这个问题,因为我读了几次。 我的客户希望我在他的应用程序中放置一个按钮,用户可以单击并退出。 我已阅读此内容,发现致电Activity.moveTaskToBack(true)可以做到。 但是,完成只是关闭当前正在运行的活动吗? 我有很多活动,因此在这种情况下,我必须传递每个活动的实例并完成它们,或者使每个活动成为Singleton模式。

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

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

27个解决方案

55 votes

实际上,每个人都希望在onclick事件上关闭应用程序,无论它在哪里活动。

因此,伙计们的朋友们尝试这段代码。 将此代码放在onclick事件上

Intent homeIntent = new Intent(Intent.ACTION_MAIN);

homeIntent.addCategory( Intent.CATEGORY_HOME );

homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(homeIntent);

Fayaz answered 2019-10-11T05:39:05Z

39 votes

您可以调用System.exit(); 摆脱所有活动。

submit=(Button)findViewById(R.id.submit);

submit.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

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

System.exit(1);

}

});

Anchit Mittal answered 2019-10-11T05:39:29Z

30 votes

如果要退出应用程序,请在按钮按下事件中使用以下代码:

public void onBackPressed() {

moveTaskToBack(true);

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

System.exit(1);

}

Pir Fahim Shah answered 2019-10-11T05:39:54Z

19 votes

@Override

public void onBackPressed() {

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

alertDialogBuilder.setTitle("Exit Application?");

alertDialogBuilder

.setMessage("Click yes to exit!")

.setCancelable(false)

.setPositiveButton("Yes",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

moveTaskToBack(true);

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

System.exit(1);

}

})

.setNegativeButton("No", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

dialog.cancel();

}

});

AlertDialog alertDialog = alertDialogBuilder.create();

alertDialog.show();

}

Aditya_Android answered 2019-10-11T05:40:13Z

17 votes

太简单了。 使用System.exit(0);

Amon Olimov answered 2019-10-11T05:40:38Z

12 votes

实际上有两种可能的情况:

您可能要退出活动

或者您想退出应用程序

您可以使用以下代码退出活动:

var intent = new Intent(Intent.ActionMain);

intent.AddCategory(Intent.CategoryHome);

intent.SetFlags(ActivityFlags.NewTask);

startActivity(intent);

finish();

但这不会杀死同一应用程序中的基础活动。这只会使应用程序最小化。

如果要退出应用程序,请使用以下代码结束其过程:

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

仅用于单声道开发

process.KillProcess(Process.MyPid());

Kasun answered 2019-10-11T05:41:45Z

9 votes

从api 16开始,您可以使用finishAffinity方法,该方法似乎非常接近通过其名称和javadoc描述来关闭所有相关活动:

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);

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

希望能帮助到你! 祝好运!

Shreshth Kharbanda answered 2019-10-11T05:42:54Z

5 votes

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

kathir answered 2019-10-11T05:43:13Z

5 votes

怎么样this.finishAffinity()

从文档中

完成此活动以及当前任务中紧接其下的所有具有相同关联性的活动。 通常,当可以将应用程序启动到另一个任务上时(例如从它了解的内容类型的ACTION_VIEW启动),并且用户已使用向上导航键切换到当前任务并切换到自己的任务时,通常使用此方法。 在这种情况下,如果用户已导航到第二个应用程序的任何其他活动,则应将所有这些活动从原始任务中删除,作为任务切换的一部分。   请注意,完成此操作后,您无法将结果传递到上一个活动,如果尝试这样做,将引发异常。

Akeshwar Jha answered 2019-10-11T05:43:52Z

3 votes

@Override

public void onBackPressed() {

Intent homeIntent = new Intent(Intent.ACTION_MAIN);

homeIntent.addCategory( Intent.CATEGORY_HOME );

homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(homeIntent);

}

azeem khan answered 2019-10-11T05:44:10Z

3 votes

使用this.finishAffinity(); 在该按钮上而不是finish();如果不起作用,您还可以尝试在清单中添加android:noHistory =“ true”,然后通过uisng finish();完成活动。 或finishAffinity();

希望能帮助到你....:)

Yesha Shah answered 2019-10-11T05:44:42Z

2 votes

将此放入您的onClick中:

moveTaskToBack(true);

finish()

Stan Malcolm answered 2019-10-11T05:45:07Z

2 votes

在通话中尝试一下。 我有时在按钮的onClick中使用它。

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

它不是关闭您的应用程序,而是打开仪表板,使您看起来像您的应用程序已关闭。

阅读此问题以更清楚android-退出应用程序代码

Rishiraj Purohit answered 2019-10-11T05:45:49Z

2 votes

这将清除Task(活动堆栈)并开始新的Task

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

System.exit(1);

Mahmood Ali answered 2019-10-11T05:46:13Z

2 votes

在Xamarin.Android中实现:

public override void OnBackPressed()

{

MoveTaskToBack(true);

Process.KillProcess(Process.MyPid());

Environment.Exit(1);

}

GONeale answered 2019-10-11T05:46:39Z

1 votes

在onCreate上用singletop和finish()调用的ghost活动应该可以解决问题

JesusS answered 2019-10-11T05:47:04Z

1 votes

它仅使用moveTaskToBack(true);即可工作

user3856297 answered 2019-10-11T05:47:30Z

1 votes

如果仍然有人想知道,对于Xamarin.Android(在我的情况下,也运行Monogame),Activity上的命令FinishAndRemoveTask()做得很好!

Konrad answered 2019-10-11T05:47:56Z

0 votes

只需在backpress中使用代码

Intent startMain = new Intent(Intent.ACTION_MAIN);

startMain.addCategory(Intent.CATEGORY_HOME);

startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(startMain);

Sayooj answered 2019-10-11T05:48:21Z

0 votes

如果您在应用程序中使用EventBus(或实际上是任何其他发布/订阅库)在活动之间进行通信,则可以向它们发送显式事件:

final public class KillItWithFireEvent

{

public KillItWithFireEvent() {}

public static void send()

{

EventBus.getDefault().post(new KillItWithFireEvent());

}

}

唯一的缺点是您需要所有活动来侦听此事件以调用其自己的finish()。为此,您可以通过继承轻松创建shim活动类,而该继承仅侦听此事件并让子类实现其他所有内容,然后确保所有 活动从此额外层继承。 Kill侦听器甚至可以通过覆盖来添加一些额外的功能,例如避免在某些特定情况下死亡。

Grzegorz Adam Hankiewicz answered 2019-10-11T05:48:55Z

0 votes

代替System.exit(1)只需使用System.exit(0)

Kaze Tdr answered 2019-10-11T05:49:20Z

0 votes

要退出应用程序,只需运行以下两行

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

System.exit(1);

Hassnain Jamil answered 2019-10-11T05:49:47Z

0 votes

在片段中

getActivity()。finishAndRemoveTask();

在活动中

finishAndRemoveTask();

Rodrigo Givisiez answered 2019-10-11T05:50:32Z

0 votes

Just call these two Function

finish();

moveTaskToBack(true);

younes answered 2019-10-11T05:50:51Z

0 votes

只需添加此代码:-

@Override

public void onBackPressed() {

finish();

super.onBackPressed();

}

Sandeep Malik answered 2019-10-11T05:51:16Z

-1 votes

如果同时使用完成和退出,则您的应用程序将完全关闭

完();

System.exit(0);

Abdullah alkış answered 2019-10-11T05:51:58Z

-1 votes

finish();

finishAffinity();

System.exit(0);

为我工作

prabhu answered 2019-10-11T05:52:20Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值