我如何在android中关闭我的应用程序
当我按下设备的后退按钮时,我想进入主屏幕。我正在使用此代码我如何在android中关闭我的应用程序,android,Android,当我按下设备的后退按钮时,我想进入主屏幕。我正在使用此代码 public void onBackPressed() { this.finish(); return; } 您可以尝试以下方法: public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK){ this.finish (); } return tr
public void onBackPressed() {
this.finish();
return;
}
您可以尝试以下方法:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode==KeyEvent.KEYCODE_BACK){
this.finish ();
}
return true;
}
您想覆盖OnkeyDown&finish活动吗
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
好的,要启动设备的主屏幕,请在
onKeyDown()中使用此代码
如果你想关闭你的应用程序,我想你要么通过finish()
以某种方式(某种标准方式)关闭你的所有活动,要么使用
android.os.Process.killProcess(android.os.Process.myPid())
。
(一些丑陋的方式…!)按后退键将有效地为您调用finish()
。不需要将BACK键设为陷阱
我假设您的问题是,当您按BACK键时,它只是返回到应用程序中的上一个活动
如果是这种情况,则在应用程序中启动新的活动时,使所有活动“自行终止”
startActivity(new Intent(this, MyNewActivity.class));
finish();
如果您这样做,则当您按BACK键时,将不会返回任何活动
,它将始终返回主屏幕。您应该覆盖finish()
然后像这样调用此方法:
@Override
public void onBackPressed() {
this.finish();
}
当您调用newacitivity时,请在startActivity
之后调用finish()
,以便关闭上一个acitivity
然后使用
@Override
public void onBackPressed() {
super.onBackPressed();
this.finish();
}
简单的方法是,当您移动到下一个活动时,只需完成当前活动
public void onBackPressed() {
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
this.finish();
}
只需在启动活动()
后执行finish()
,然后在“任何活动”的背面按,您只需调用finish()
即可退出应用程序,因为堆栈中没有所有其他活动。您可以尝试此操作
@Override
public void onBackPressed() {
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
您可以从任何位置关闭应用程序以调用此类型的意图:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
这是从任何地方关闭应用程序的最佳方式,在任何单击事件上,您需要使用标志启动意图,以清除实际活动顶部的活动
public void onBackPressed() {
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
this.finish();
}
引用官方的话
标记\u活动\u清除\u顶部
如果已设置,则正在启动的活动已在中运行
当前任务,而不是启动该任务的新实例
活动,其上的所有其他活动都将关闭,并且
此意图将作为一个整体传递给(现在位于顶部)旧活动
新的意图
标记活动\u清除任务
如果在传递给Context.startActivity()的意图中设置,则此标志将
使将与活动关联的任何现有任务
在活动开始之前,必须清除。就是活动,
成为其他空任务的新根,以及任何旧根
活动结束了。这只能与
标记\u活动\u新任务
标记活动/否历史记录
如果设置,则新活动不会保留在历史堆栈中。一旦
用户离开它,活动就完成了。今年五月
也可以使用noHistory属性设置
标记活动和新任务
如果设置,此活动将成为此服务器上新任务的开始
历史堆栈
残酷的方式您在使用此代码时面临的问题是什么?请不要向他人推荐此代码。这真的不是Android应该如何工作。为什么,请解释一下。我喜欢这样,我只是不想让背部做任何事情,除了这个。这根本不是一个好主意!请看第一个问题的答案:您正在启动主屏幕,并要求它作为新任务启动。系统将忽略您的标志,因为主屏幕始终在运行。更重要的是,我们希望清理当前任务的活动堆栈,而不是跳转到主屏幕。第二种方法也不好,你在做操作系统应该做的事情。调用finish()就足够了,决定是否终止进程是操作系统的任务。不管怎么说,你们自己也提到过。@Vikram Bodicherla-在这里,我们不知道应用程序中有多少活动被打开。所以我不能只为finish()重新编译,而kill进程的另一种方式是,只需看看android Home key实现代码,它也会做同样的事情……这样做并没有取得任何效果。删除这段代码将产生完全相同的效果!对你是对的,但是onBackPressed是不推荐使用的…我也经历过有时候onBackPressed不被调用。所以对我来说,戴上钥匙是个更好的主意。但是,默认情况下,如果您按下“后退”按钮,它将引导您进入上一屏幕。“但是,默认情况下,如果您按下“后退”按钮,它将引导您进入上一屏幕”:系统执行此操作的方式是在活动上调用finish()。这也是你正在做的。这应该是公认的答案。对meThis来说,它就像一个符咒,听起来很有道理。它只会让另一个活动出现在堆栈上。要返回,必须在意图中设置一个标志。FLAG_ACTIVITY_CLEAR_TOP我认为在这种情况下,最好使用FLAG_ACTIVITY_CLEAR_TOP
public void onBackPressed() {
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
this.finish();
}
@Override
public void onBackPressed()
{
Intent intCloseApp = new Intent(Intent.ACTION_MAIN);
intCloseApp.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intCloseApp.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intCloseApp.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intCloseApp.addCategory(Intent.CATEGORY_HOME);
intCloseApp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intCloseApp);
}
public void onBackPressed() {
System.exit(1);
return;
}