我正在处理一款处理敏感用户信息的Android应用。其中一个要求是用户需要在他们离开并返回时重新登录应用程序。当用户按下主页按钮,然后重新启动应用程序(android:clearTaskOnLaunch
中的Activity
)AndroidManifest.xml
属性时,可以轻松处理此问题。但是,当用户长按主页按钮,切换到另一个应用程序然后返回时,我们需要做同样的事情。
我已经研究过每一种我能想到的方法,但却没有找到可行的解决方案。这甚至可以用于Android吗?
在回答时,请记住这是我无法控制的业务要求。
答案 0 :(得分:3)
好吧,昨天我遇到了同样的问题。这就是我所做的,它运作良好:
android:launchMode="singleTask"
AndroidManifest.xml
为了澄清,我的主要活动只有一个按钮,表示登录并启动登录页面。
答案 1 :(得分:0)
你有什么尝试?您始终可以使用正确的Activity lifecycle方法清除正在保存的任何会话。
答案 2 :(得分:-1)
如果我理解正确您每次有人回到应用程序时都需要授权,无论是重新进行还是回到应用程序,那么您可以覆盖活动(或活动)上的onRestart()活动生命周期事件。因此,在onRestart()中,您可以将用户重定向到登录屏幕(您可能还希望根据您的要求考虑onResume())
此页面上的生命周期图表将更清晰: http://developer.android.com/reference/android/app/Activity.html
答案 3 :(得分:-1)
是否有可能将其作为基于时间的事情,而不是严格地离开应用程序并返回?
您可以拥有一个单独的服务来跟踪用户上次访问该应用程序的时间。
即,在每个onPause中,Activity告诉服务某个Activity已暂停。该服务记录了该时间。
在每个onResume中,活动通知服务它希望恢复。如果自上次onPause后经过了一段时间,则服务表明需要登录。
我认为这会比他们每次离开应用程序时都能提供更好的用户体验。这可能非常令人沮丧,需要30秒才能阅读文本,然后必须再次登录。
我想如果你调整它以使超时非常短,它的行为与你要求的行为非常相似,但是可以选择减少延迟。
答案 4 :(得分:-1)
我认为实现这一目标的最简单方法是在主要活动中添加一个字段,例如private boolean isLocked = true;
。
要在显示其他应用时锁定应用,请在isLocked = true
方法中设置onPause()
。为了确保您不会锁定自己的应用,从自己的活动返回时,请通过startActivityForResult()
启动它们并在onActivityResult
中解锁。
您现在可以检查onResume()
您的应用已被锁定并将用户重定向到您的登录屏幕。