会话超时实现问题,标题栏上有后退按钮

时间:2014-10-26 08:30:21

标签: android session back-button motionevent

我已在我的应用程序中实现了会话超时功能

  • 当用户在我的应用程序上未处于活动状态时,让应用程序保持运行约3分钟,它将填充一个对话框以确认要继续的PIN码。
  • 这样可以正常工作但是当用户在任何活动中点击标题栏上的BACK按钮时(如果会话超时 - 3分钟),应用程序会将对话框显示为闪存并返回上一个活动。
  • 单击后退按钮并且会话超时。我希望应用程序填充对话框,询问引脚但不会移回上一个活动,直到引脚匹配。
  • 我尝试查找信息来控制标题栏上的BACK按钮。当用户单击后退按钮时,它应首先检查会话是否超时然后继续,但找不到任何信息。
  • 为了达到这个目的,我使用的是“dispatchTouchEvent(MotionEvent ev)”,每次用户点击应用程序时,检查时间是否很好?
  • 如果您可以提出一些解决方案或任何不同的方法来实现这一目标。

    / **    检查应用程序空闲时间并显示对话框的方法    引脚验证

    * /

        public void checkLastLoggedInTime() {
    
           if ((System.currentTimeMillis() - lastLoggedIn) / 1000 >= 300) {
    
               if (pinVerficationDialogPopedUp == false) {
                   //pops up the pin dialog
                   pinVerificationDialog();
               }
               } else {
                  lastLoggedIn = System.currentTimeMillis();
               }
          }
    

    在每个活动中,我实施了“dispatchTouchEvent()”和“onResume()”来检查会话超时

        @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            // check the idle time
            try{
            Utility utilityObj = new Utility(this);
            utilityObj.checkLastLoggedInTime();
            }catch(Exception e){
               e.printStackTrace();
            }
        }
        return super.dispatchTouchEvent(ev);
        }
    
        @Override
        protected void onResume() {
        super.onResume();
        // check the idle time
        try{
             Utility utilityObj = new Utility(this);
             utilityObj.checkLastLoggedInTime();
        }catch(Exception e){
            e.printStackTrace();
        }
        }
    

    非常感谢您的建议,谢谢您。

0 个答案:

没有答案