APP操作超时,重新登录

这个功能描述的是长时间不操作后,重新登录。实现这个功能需要三步操作:
1.获取activity的Ui触摸操作
2.在activity 的dispatchTouchEvent中定义超时时间和超时逻辑
3.跳转到登陆页面,相当于注销功能
1.UI触摸操作
事件onTouchEvent和dispatchTouchEvent都能截获对activity地触摸事件,因为我们不对具体事件做处理,选择其中一个就可以

2.定义超时逻辑
因为操作屏幕地时候你最后一个动作永远是抬起来。所以定义 手指抬起来的时候设置定时器,按下去地时候取消定时器。

 private Handler postHandle = new Handler();
 private long time=1000*10;
        //这里选择dispatchTouchEvent 接收触摸操作
   @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                Log.i("dispatchTouchEvent", "按下");
                postHandle.removeCallbacks(runnable);
                break;
            case MotionEvent.ACTION_UP:
                Log.i("dispatchTouchEvent", "抬起");
                startAD();
                break;
        }
        return super.dispatchTouchEvent(event);
    }
   
    public void startAD() {
        postHandle.removeCallbacks(runnable);
        postHandle.postDelayed(runnable, time);
    }

3.注销

 private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            Log.i("执行", "线程");
            if (!getCurActivity()) {
                Intent logoutIntent = new Intent(BaseActivity.this, MainActivity.class);
                logoutIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(logoutIntent);
            }
        }
    };
//屏蔽不需要超时登录的界面,如果没有 返回false
private boolean getMainActivity() {
        if (this instanceof ConfigActivity) {
            return true;
        } else {
            return false;
        }
    }

猜你喜欢

转载自blog.csdn.net/zhixun2012/article/details/70207587