2

我正在开发一个 Android 应用程序,该应用程序将向大学健身教授展示他们的学生在课堂上的表现。由于这些数据相当敏感(显示了生物特征,包括体重,这是许多大学生自觉的),我不希望任何拿起平板电脑的人都可以使用这些数据。虽然我创建了正确的登录屏幕,并完成了数据库的身份验证等。按下主页按钮时出现问题。由于 Android 在离开应用程序时不会立即关闭程序,因此可以重新打开它并返回到您所在的位置。我想每次都强制应用程序返回登录屏幕(我已经改变了 onBackPressed,所以你可以' t 只是从登录屏幕返回到上一个视图),因此您必须重新输入您的凭据才能重新进入应用程序。但是,我似乎无法做到这一点。我在这里找到的答案说使用以下行:

android:clearTaskOnLaunch="true"

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

4

4 回答 4

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

因此,当您检测到按下主页按钮时,您可以完成正在运行的活动。因此,下次用户单击该应用程序时,它将从第一个登录屏幕开始。

希望这可以帮助。

于 2013-07-10T19:15:50.563 回答
3

你应该覆盖onUserLeaveHint()

@Override
protected void onUserLeaveHint() {
    // do your logic
    //finish() or start login activity  
}
于 2013-07-10T19:16:36.417 回答
0

我发现了如何在我的情况下做到这一点。对于任何其他有相同问题的人,请尝试按照此处的示例进行操作:

Android检测应用程序是否进入后台

于 2013-07-10T20:30:37.340 回答
0

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

编辑:

对于多个活动,您可以检查保存的上下文以查看它们在您开始新活动时是否相同。如果上下文不同,那么您可以丢弃上下文以前的活动上下文并开始一个新活动。

如果它们是相同的,那么你已经从它本身返回到活动(你已经降低并带回了屏幕)。在简单应用程序的情况下,您将不得不使用某种形式的保存状态,例如以这种方式处理多个活动。

于 2013-07-10T19:10:39.830 回答