这个功能描述的是长时间不操作后,重新登录。实现这个功能需要三步操作:
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;
}
}