我正在尝试开发一个应用程序,只要用户切换到其他应用程序或按Home键就会调用登录类。
例如,我有两个活动Activity1和Activity2。
目前我正在每个Activity的onPause方法中启动Login类的意图。因此,当我从Activity1切换到Activity2时,Activity1的onPause方法正在执行,我无法切换到Activity2。
简单来说,只有当用户切换到某个其他应用程序或按Home键时才应调用Login类,而不应该在应用程序处于前台时调用。
希望你理解我的问题。 谢谢!
答案 0 :(得分:0)
在应用Application
中覆盖set/reset
和onCreate()/onTerminate()
登录首选项。
希望这会有所帮助。
答案 1 :(得分:0)
使用布尔标志。
boolean movingInApp = false;
....
movingInApp = true;
Intent intent...
.....
public void onPause() {
if(!movingInApp) {
//Show login
}
}
public void onResume() {
movingInApp = false;
}
通过在启动任何意图等之前将movingInApp
的值设置为true,您可以阻止您的应用显示登录屏幕。请务必稍后在onResume()
方法中将其重新设置为false。如果系统让你的应用程序转到后台,这将是错误的,并且将显示您的登录屏幕。
更好的方法是在某些BaseActivity中实现此逻辑,并让所有其他活动继承它。
答案 2 :(得分:0)
你必须自己实施这样的事情。 Android的应用程序概念与其他平台不同;用户不与应用程序交互,而是与各个应用程序组件(活动)交互。您可以在Application
子类中实现此功能,但系统可以在应用程序离开您的活动后保持应用程序(例如,按HOME)。
我为这样的问题做的一个解决方案是创建一个单例类(可能称为LoginManager),其中包含镜像Activity生命周期回调的生命周期回调。然后创建一个BaseActivity类,它获取单例,并且每个生命周期回调调用单例中的相应方法。通过这种方式,您可以跟踪活动在整个生命周期中的时间并做出相应的反应。
我注意到要启动,恢复,暂停或停止的活动。打开活动时,当前活动暂停,下一个打开,创建,启动和恢复(或重新启动并恢复),然后第一个停止。
答案 3 :(得分:0)
我现在不是100%清楚你是如何实现这一点的,但根据描述,你可能希望将这个logIn类onResume()
而不是onPause()
包含在内。如果您在每次活动回到前台时尝试让用户进行身份验证,那么我会执行以下操作:
(1)将应用的最后状态存储到SharedPreferences onPause()
和/或onStop()
(2)onResume()
或onRestart()
使用意图将用户引导回logIn活动(或根据您的执行情况自动进行身份验证)
(3)如果验证成功,则访问存储在SharedPreferences中的最后一个状态,然后返回到用户所处的行为