我有一个应用程序,在主页上我有通过应用程序导航的按钮.
在那个页面上,我有一个"EXIT"按钮,当点击它时,应该将用户带到应用程序图标所在的手机上的主屏幕.
我怎样才能做到这一点?
Android的设计不赞成通过选择退出应用程序,而是通过操作系统管理它.您可以通过相应的Intent调出Home应用程序:
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
也许你可以尝试这样的事情
假设在我们的应用程序中,我们有许多活动(比如十个),我们需要直接退出此活动.我们可以做的是,创建一个intent并转到root活动并在intent中设置标志
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
另外,在意图中添加一些额外的布尔值
intent.putExtra("EXIT", true);
然后在根活动,检查的值boolean
,并根据该呼叫结束(),在onCreate()
根活动
if (getIntent().getBooleanExtra("EXIT", false)) { finish(); }
System.exit(0);
可能就是你要找的东西.它将关闭整个应用程序并带您进入主屏幕.
这对我很有用.
关闭所有以前的活动,如下所示:
Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("Exit me", true); startActivity(intent); finish();
然后在MainActivity onCreate()方法中添加此项以完成MainActivity
setContentView(R.layout.main_layout); if( getIntent().getBooleanExtra("Exit me", false)){ finish(); return; // add this to prevent from doing unnecessary stuffs }
首先使用方法完成您的申请 finish();
然后在onDestroy中添加以下行以删除Force关闭
android.os.Process.killProcess(android.os.Process.myPid()); super.onDestroy();
如果您想结束活动,可以直接致电finish()
.然而,在屏幕上有一个退出按钮是不好的做法.
有些活动实际上你不想在按下后退按钮时再次打开这样的Splash Screen Activity,欢迎屏幕活动,确认Windows.实际上你在活动堆栈中不需要这个.你可以使用=> open manifest.xml文件并添加一个属性
机器人:noHistory = "真"
这些活动.
要么
有时您希望在某些后退按钮中关闭整个应用程序.这里的最佳实践是打开主窗口而不是退出应用程序.为此,您需要覆盖onBackPressed()方法.通常这种方法会打开堆栈中的顶级活动.
@Override public void onBackPressed(){ Intent a = new Intent(Intent.ACTION_MAIN); a.addCategory(Intent.CATEGORY_HOME); a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(a); }
要么
在后退按钮中,您想要退出该活动,并且您也不想在活动堆栈中添加它.在onBackPressed()方法中调用finish()方法.它不会关闭整个应用程序.它将用于堆栈中的先前活动.
@Override public void onBackPressed() { finish(); }
建议不要退出Android应用程序.有关详细信息,请参阅此问题.
用户可以随时通过主页按钮退出应用程序,也可以通过后退按钮退出第一个活动.
(我尝试过以前的答案,但他们缺少一些观点.例如,如果你return;
在完成活动后没有完成,剩下的活动代码就会运行.你还需要编辑onCreate with return.如果你没有运行super.onCreate()你会得到一个运行时错误)
说你有MainActivity
和ChildActivity
.
在ChildActivity里面添加:
Intent intent = new Intent(ChildActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("EXIT", true); startActivity(intent); return true;
在MainActivity的onCreate里面添加:
@Override public void onCreate(Bundle savedInstanceState) { mContext = getApplicationContext(); super.onCreate(savedInstanceState); if (getIntent().getBooleanExtra("EXIT", false)) { finish(); return; } // your current codes // your current codes }