在Android中创建和处理应用程序超时

时间:2012-07-15 22:13:12

标签: java android

我想知道什么是处理应用程序超时的最佳方法,例如PayPal。我希望用户在1到5分钟或15分钟的超时时间内进行选择,因此当他们打开应用程序时,他们必须再次登录。

我的onResume方法:

@Override
    public void onResume() {

    } 

它没有任何内容。但它崩溃了。

作为备注:我的应用程序有两个活动。第一个活动是登录屏幕。第二个活动是主屏幕。 onResume方法是第二个活动。

2 个答案:

答案 0 :(得分:8)

我在我的一个应用中做到了这一点:

您需要一个基本活动,您的所有活动都将从中扩展。在此基本活动中,添加一个跟踪“最后一个用户活动”的变量。时间戳。就我而言,用户活动只是意味着他们触摸了屏幕。因此,重写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
    }
} 

答案 1 :(得分:0)

我会在应用程序运行并处于活动状态时使用心跳计时器,并跟踪当前时间(或上次活动时间 - 任何一个)。当应用程序从用户点击主页按钮进入后台时(或退出 - 不确定如何处理后退按钮) - 通过将值保存到共享首选项来记住该值。当应用程序启动或恢复时,您可以将当前时间与保存的时间进行比较,如果增量大于“x”,则可以将用户定向到登录屏幕。确保您关注主活动中的onPause,onResume,onStop,onDestroy事件。我个人会使用System.currentTimeMillis作为时间戳,然后比较millis并根据您的时间(秒,分钟等)进行适当划分。