需求是进入应用主页后,当一段时间后未做任何触屏动作时,系统自动清空登录信息和跳转到首页。当每次有触屏动作的时候则修改上次动作时间。
实现方式是启动一个记时器,让计时器每两秒执行一次检查当前时间与上次操作的时间间隔是否大于需要设置的间隔,满足条件时,先关闭计时器,然后进行相应的跳转,注意页面按钮的跳转也需要先关闭计时器后再操作,防止异常出现。代码如下:
private Timer mTimer; // 计时器,每2秒执行一次任务
private MyTimerTask mTimerTask; // 计时任务,判断是否未操作时间到达ns
private long mLastActionTime; // 上一次操作时间
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
mLastActionTime = System.currentTimeMillis();
LogUtils.e("=mLastActionTime=",mLastActionTime+"");
//ToastUtil.showShort(homePageActivity.this, "正在点击屏幕");
//Log.e(TAG, "正在点击屏幕");
return super.dispatchTouchEvent(ev);
}
private class MyTimerTask extends TimerTask {
@Override
public void run() {
//Log.e(TAG, "计时中……");
// 3分钟未操作停止计时并退出登录
LogUtils.e("=1=","主页屏幕未操作检查");
LogUtils.e("=主页操作间隔时间=",(System.currentTimeMillis() - mLastActionTime)/1000 +"");
if (System.currentTimeMillis() - mLastActionTime > 1000 * 60 * 3) {
stopTimer();
boolean loginFlag = loginCheck();
if(loginFlag == true) {//登录了,退出后跳首页
SharedPreferencesUtil.remove(homePageActivity.this,"studentAccent");
SharedPreferencesUtil.remove(homePageActivity.this,"passwd");
SharedPreferencesUtil.remove(homePageActivity.this,"studentId");
SharedPreferencesUtil.remove(homePageActivity.this,"studentName");
SharedPreferencesUtil.remove(homePageActivity.this,"sessionId");
SharedPreferencesUtil.remove(homePageActivity.this,"sessionExpires");
SharedPreferencesUtil.remove(homePageActivity.this,"regFlag");
Intent intent = new Intent(homePageActivity.this, FullscreenActivity.class);
startActivity(intent);
} else {//未登录,跳首页
Intent intent = new Intent(homePageActivity.this, FullscreenActivity.class);
startActivity(intent);
}
}
}
}
public void stopTimer() {
LogUtils.e("=1=","主页定时任务关闭");
mTimer.cancel();
}
private void startTimer() {
LogUtils.e("=1=","主页定时任务启动");
mTimer = new Timer();
mTimerTask = new MyTimerTask();
// 初始化上次操作时间为登录成功的时间
mLastActionTime = System.currentTimeMillis();
// 每过1s检查一次
mTimer.schedule(mTimerTask, 0, 2000);
//Log.e(TAG, "登录成功开始计时");
}
因为我们应用的首页显示了登录信息,所以也需要进行监控(原理同上),同时出现了若登录并且长时间未操作需要清空登录信息并刷新首页(而非上边主页的清空和跳转动作),因此需要在清空登录信息后添加关闭计时器和刷新代码,如下:
以上就完成了主页监控长时间未操作则退出登录和跳转到首页,首页则监控长时间未操作则退出登录和刷新。
参考链接:https://www.csdn.net/tags/MtTaEgysMTgwODE5LWJsb2cO0O0O.html



