一般app应该都会有这个需求,多久对页面没有操作就会退出登录,这里的实现方法用定时器。
1、思路
1)写一个基础的BaseActivity;
2)让其他所有页面的Activity都继承这个BaseActivity;
3)在BaseActivity里监听有无页面操作;
4)在OnResume中启动计时器;
5)在dispatchTouchEvent中监听有动作是取消计时,抬起动作是启动计时器;
6)计时结束就调退出登录。
2、BaseActivity里关键代码
private long advertisingTime = 300 * 1000;///定时结束退出登录5分(分钟)=300000毫秒
public CountDownTimer countDownTimer;
@Override
protected void onResume() {
super.onResume();
//启动定时
isLogout();
}
/**
* 计时
*/
public void isLogout() {
if ("1".equals(login)) {//已登录状态
if (countDownTimer == null) {
countDownTimer = new CountDownTimer(advertisingTime, 300000) {//登录状态是时页面5分钟没有操作弹窗提示
@Override
public void onTick(long millisUntilFinished) {
}
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onFinish() {
//定时结束后的操作
Logout();//退出登录
if (countDownTimer != null) {
countDownTimer.cancel();
}
}
};
countDownTimer.start();
} else {
countDownTimer.start();
}
}
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
//有按下动作时取消定时
if (countDownTimer != null){
countDownTimer.cancel();
}
break;
case MotionEvent.ACTION_UP:
//抬起时启动定时
isLogout();
break;
}
return super.dispatchTouchEvent(ev);
}
完结。