当任何形式的退出完成时,即使用HOME,SWITCH和BACK按钮完成关闭Android应用程序
问题描述:
我正在构建Android应用程序,特别是登录页面,我希望应用程序完全关闭应用程序用户将以任何方式退出登录页面,即使用SWITCH,HOME或BACK按钮。当任何形式的退出完成时,即使用HOME,SWITCH和BACK按钮完成关闭Android应用程序
应用程序不应该完全关闭的唯一时间应该是用户成功登录时,即按下自定义创建的登录按钮或输入按钮时。
我已经能够成功地关闭应用程序,但即使在用户成功登录时也会关闭。这并不意味着要做到这一点。
下面是我的完整停机码 - 我接手的onDestroy(),onBackPressed(),完成()和的onStop()方法:
// Deal with back button
public void onBackPressed() {
System.runFinalizersOnExit(true);
System.exit(0);
}
// Deal with exiting of app
public void finish() {
System.runFinalizersOnExit(true);
System.exit(0);
}
// Deal with exiting of app
public void onDestroy() {
System.runFinalizersOnExit(true);
System.exit(0);
}
// Deal with exiting of app
public void onStop() {
System.runFinalizersOnExit(true);
System.exit(0);
}
没有任何人有任何想法,关于我的问题
你的帮助是极大的赞赏
答
只需创建一个类成员布尔值mLoggedIn
并将其设置为true当自定义创建的登录按钮或输入按钮被按下时。
然后
@Override
protected void onPause()
{
super.onPause();
if (!mLoggedIn)
{
finish();
}
}
答
每当您的活动变为不可见时,系统会调用onStop()
方法:当您的应用进入后台,屏幕关闭时,或当您切换到其他活动时。
无论如何,你想要做的是强烈不鼓励。 (Dianne Hackborn是Android Framework的主要开发人员之一)。
强制关闭您的应用使用System.exit()
,Process.killProcess()
等与Android应用生命周期存在冲突的强烈风险,并且可能破坏其保存的状态,导致您的用户出现意想不到的不愉快行为。
更好的方法是在启动登录活动时使用标志FLAG_ACTIVITY_SINGLE_TOP
和FLAG_ACTIVITY_CLEAR_TOP
。 这应该从应用程序中删除先前的活动,这与从用户角度开始新应用程序相同。
你不必'@ Override'任何这些或'super.onStop()'或任何其他'super.method()'。这可能会导致问题吗? – TronicZomB 2013-03-13 15:32:54
@TronicZomB“@ Override”注解只是一种方便,它可以帮助如果重写方法被重命名或删除,因为它会导致编译器警告/错误。这并不是强制性的 – nicopico 2013-03-13 15:39:33
@nicopico谢谢。我仍然在学习,所以很高兴知道。 – TronicZomB 2013-03-13 15:40:51