如何在 Android 应用程序中维护会话超时处理

Posted

技术标签:

【中文标题】如何在 Android 应用程序中维护会话超时处理【英文标题】:How to maintain Session Timeout handling in Android Application 【发布时间】:2012-07-23 17:40:45 【问题描述】:

我是 android 应用程序开发的新手。我有一个小问题。在我的 Android 应用程序上工作时突然点击“主页”按钮,所以它会在一段时间后再次进入后台转到“主页”并单击我的应用程序图标它再次从我的第一个屏幕开始而不是这个我保留了上次查看的活动,并且应该显示消息,例如“您的会话超时,所以请再次登录带有两个 EditText 框的框”然后检查凭据并允许用户继续或重定向到登录屏幕。如何实现这一点。

提前谢谢..

【问题讨论】:

你使用的是服务器客户端架构吗? 不,我只想保持登录安全,仅此而已... 【参考方案1】:

在 Android 中很简单。你需要维护SharedPreferences

阅读this 以更好地理解这个概念。

这将作为

 ==> when ever you are trying to maintain login concept save user name in the sharedpreference.
 ==> once data is edited in prefernces.xml , the data in it can be check in any Activity.

例如,要保存用户名、密码和会话 ID,您可以:

 SharedPreferences pref = myContexy.getSharedPreferences("Session Data", MODE_PRIVATE);
 SharedPreferences.Editor edit = pref.edit();
 edit.putString("User Name", username);
 edit.putString("Password", password);
 edit.putInt("Session ID", session_id);
 edit.commit();

得到它们

 SharedPreferences pref = myContexy.getSharedPreferences("Session Data", MODE_PRIVATE);
 username = pref.getString("User Name", "");
 password = pref.getString("Password", "");
 session_id = pref.getInt("Session ID", 0);

【讨论】:

我认为存储用户密码并不安全。这似乎不合法或良好的做法。 我完全同意。不安全。【参考方案2】:

SharedPreferences 肯定是要走的路,但要更详细地了解超时:

将当前时间戳保存在onPause() (-> SharedPreferences) 然后在onResume()比较它,检查是否超时

如果您没有超时,请继续,否则显示漂亮的屏幕,只需注销、自毁设备或在这种情况下您想做的任何事情 :-)

您还可以考虑实现某种会话管理器类,以便在更高级别上处理它: Nice example/tutorial from android hive

【讨论】:

解释很清楚,自毁/不可能的任务参考 +100【参考方案3】:

查看此图了解 Activity 生命周期的说明:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

覆盖 Activity 中的适当方法以跟踪它何时失去/重新获得焦点。

【讨论】:

根据您的回答,应用程序只会根据其活动生命周期变得可见或不可见。但问题是关于如何保持会话超时,即如果会话超时,堆栈中的所有活动都将被清除,用户将被导航到登录屏幕。【参考方案4】:

如果您想维护用户登录会话,那么我们可以使用处理程序来执行此操作,而不是在所有活动中都拥有偏好。

    用户登录后创建Handler 设置sendMessageAtTime(Message, long),long为毫秒值。这将调用定义的注销函数。

【讨论】:

以上是关于如何在 Android 应用程序中维护会话超时处理的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ibm worklight 混合移动应用程序中处理客户端会话超时

如何使用JQuery和ColdFusion处理会话超时警告?

在 Android 中维护用户会话

如何在两个窗口之间维护 Wpf 应用程序中的会话? [关闭]

多个服务器如何通过维护相同的用户会话来处理 Web 应用程序请求。?

如何显示足够智能以处理多个打开的浏览器或选项卡的会话超时警告