我想知道处理应用程序超时的最佳方式(如PayPal)是什么。我希望用户选择1分钟,5分钟或15分钟的超时时间,因此当他们打开应用程序时,他们必须重新登录。在Android中创建和处理应用程序超时
我的onResume方法:
它什么也没有。但它崩溃。
作为说明:我的应用程序有两个活动。第一项活动是登录屏幕。第二个活动是主屏幕。 onResume方法在第二个活动中。
我想知道处理应用程序超时的最佳方式(如PayPal)是什么。我希望用户选择1分钟,5分钟或15分钟的超时时间,因此当他们打开应用程序时,他们必须重新登录。在Android中创建和处理应用程序超时
我的onResume方法:
它什么也没有。但它崩溃。
作为说明:我的应用程序有两个活动。第一项活动是登录屏幕。第二个活动是主屏幕。 onResume方法在第二个活动中。
我做这在我的应用程序之一:
你需要一个基础的活动为您的所有活动将延长。在此基本活动中,添加一个跟踪“上次用户活动”时间戳记的变量。就我而言,用户活动仅仅意味着他们触摸屏幕。因此,重写dispatchTouchEvent(MotionEvent ev)方法,并将“上次用户活动”设置为当前时间戳。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
lastActivity = new Date().getTime();
return super.dispatchTouchEvent(ev);
}
然后该基活性的的onResume()方法,只是用比较“最后用户活动”时间戳当前时间戳。如果超过1分钟,5分钟或15分钟(可由用户配置),则启动另一个活动以要求用户登录。
@Override
public void onResume() {
long now = new Date().getTime();
if (now - lastActivity > xxxx) {
// startActivity and force logon
}
}
我会在应用程序运行并处于活动状态时使用心跳计时器,并跟踪当前时间(或上一次活动时间 - 任一时间)。当应用从用户点击主页按钮进入后台时(或退出 - 不知道如何处理后退按钮) - 通过将值保存到共享首选项来记住该值。当应用程序启动或恢复时,您可以将当前时间与保存的时间进行比较,如果增量大于“x”,则可以将用户导向登录屏幕。确保您关注主要活动中的onPause,onResume,onStop,onDestroy事件。我会亲自使用System.currentTimeMillis作为时间戳,然后根据您的时间(秒,分钟等)适当地比较毫秒和相除。
你试过了什么?知道你到目前为止使用的方法将帮助我们确定最适合你的方法。 – Eric 2012-07-15 22:18:15
如果身份验证基于HTTP传输(一个android客户端 - http服务器通信),那么最好在http级别(通过http API,像HttpClient)管理会话超时,而不是在应用程序的UI级别。 – yorkw 2012-07-15 22:41:52
我只尝试过一种方法,那就是有一个开始“路由”活动。它会根据您离开应用程序的时间长短将您路由到适当的屏幕。此外,为了回应约克,这个应用程序完全是本地的,没有外部连接。 – EGHDK 2012-07-15 23:04:08