每次都在同一活动上启动Android App

时间:2013-07-10 19:06:26

标签: android privacy app-startup

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

android:clearTaskOnLaunch="true"

然而,无论我把它放在什么XML文件中,无论是Manifest还是单独的Activity XML,它似乎什么都不做。那么,每次启动应用程序时,如何确保登录屏幕出现,无论是否从头开始?

4 个答案:

答案 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

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

希望这会有所帮助。

答案 1 :(得分:3)

您应该覆盖onUserLeaveHint()

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

答案 2 :(得分:0)

您可以在活动中启动onPause()时设置标记。然后当你返回时,你可以从onResume()中检查标志,然后从该点请求登录。这肯定会每次都要求它;在一个简单的例子当然。

修改

通过多个活动,您可以检查已保存的上下文,以查看在开始新活动时它们是否相同。如果上下文不同,则可以丢弃上下文之前的活动上下文并开始新活动。

如果它们是相同的,那么你已经从它自己回到了活动(你已经降低并将屏幕带回来)。在简单应用程序的情况之外,您必须使用某种形式的已保存状态,例如以这种方式执行多个活动。

答案 3 :(得分:0)

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

Android detecting if an application entered the background