2013-07-10 134 views
2

我正在开发一个Android应用程序,该应用程序将向大学健身教授展示他们的学生在课堂上的表现。由于这些数据相当敏感(包括体重在内的生物测量学数据,许多大学生都是自我意识的),我不希望任何人拿起数据。虽然我创建了正确的登录屏幕,但完成了对数据库的身份验证等操作。按主页按钮时遇到问题。由于Android不会在离开应用程序时立即关闭程序,因此可能会重新打开并返回到原来的位置。我想强制应用程序每次都返回到登录屏幕(我已经更改了onBackPressed,因此您不能仅仅从登录屏幕返回到以前的视图),以便您必须重新输入凭据才能取回进入应用程序。但是,我似乎无法做到这一点。我发现一个答案在这里说,使用以下行:每次都在同一活动上启动Android应用程序

android:clearTaskOnLaunch="true" 

但是,不管我把什么XML文件它,是它的清单或个别活动个XML,它似乎什么也不做。那么,如何确保每次启动应用程序时登录屏幕都会出现,无论它是从头开始还是从头开始?

+0

发表您的清单。 –

回答

0

当onPause()在活动中启动时,您可以设置一个标志。然后,当您返回时,您可以从onResume()内检查标志,然后从该点请求登录。这将一定要求每次;当然在一个简单的情况下。

编辑:

随着多个活动,你可以检查对保存的情况下,看看他们是相同的,当你开始一个新的活动。如果上下文不同,那么您可以放弃上下文之前的活动上下文并开始新的活动。

如果它们是相同的,那么你已经回到自己的活动中(你已经降低并将屏幕拉回)。如果在一个简单应用程序的情况之外,您将不得不使用某种形式的保存状态,以这种方式进行多项活动。

+0

如何区分当不同的活动被调用时和用户何时离开应用程序? – HopeProgrammer1994

+0

不知道你是否有一个简单的应用程序登录屏幕,然后只有一个活动照顾。或者如果你真的只有一个活动屏幕,你想确保他们一旦离开它们就不能访问。所以这可能不适合你。 –

3

试着玩onUserLeaveHint()方法。如果你读它的文档,它说:

Its Called as part of the activity lifecycle when an activity is about to go into the background as the result of user choice. For example, when the user presses the Home key, onUserLeaveHint() will be called, but when an incoming phone call causes the in-call Activity to be automatically brought to the foreground, onUserLeaveHint() will not be called

所以,无论你在家检测按下按钮时,你可以完成运行的活动/活动。所以下次用户点击应用程序时,它将从第一个登录屏幕开始。

希望这会有所帮助。

+0

这是有效的。非常感谢你! – HopeProgrammer1994

+0

好的,我遇到了一个问题。当我尝试通过ANY方法离开视图时,它会返回到登录屏幕。有没有办法区分何时按下主页按钮与其他任何东西? – HopeProgrammer1994

+0

@ HopeProgrammer1994不知道,我总是发现onUserLeaveHint()太频繁地触发它,它可能会或可能不会是你想要的。 –

3

您应该重写onUserLeaveHint()

@Override 
protected void onUserLeaveHint() { 
    // do your logic 
    //finish() or start login activity 
} 
+0

这有效。非常感谢你!自第一次以来,我接受了另一个,但我很欣赏这个补充说明! – HopeProgrammer1994

相关问题