【发布时间】:2019-01-11 14:25:25
【问题描述】:
我有一个应用程序,我需要Activity在空闲时自动关闭,也就是说,如果用户30秒没有触摸屏幕,Activity会自动关闭。当用户使用(触摸)Activity 时,它将保持打开状态。
我正在使用CountDownTimer 方法,但即使用户正在使用该应用程序,它也会关闭。
有人可以帮帮我吗?
【问题讨论】:
标签: android android-activity timeout
我有一个应用程序,我需要Activity在空闲时自动关闭,也就是说,如果用户30秒没有触摸屏幕,Activity会自动关闭。当用户使用(触摸)Activity 时,它将保持打开状态。
我正在使用CountDownTimer 方法,但即使用户正在使用该应用程序,它也会关闭。
有人可以帮帮我吗?
【问题讨论】:
标签: android android-activity timeout
取消和启动计时器怎么样。
@Override
public void onUserInteraction() {
super.onUserInteraction();
yourCountDownTimer.cancel();
yourCountDownTimer.start();
}
【讨论】:
您可以像这样使用touch listener 并重置倒数计时器或用于关闭活动的线程
@Override
public boolean onTouchEvent(MotionEvent event) {
//mGestureDetector.onTouchEvent(event);
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
initialX = event.getX();
initialY = event.getY();
Log.d(TAG, "Action was DOWN");
break;
case MotionEvent.ACTION_MOVE:
Log.d(TAG, "Action was MOVE");
break;
case MotionEvent.ACTION_UP:
float finalX = event.getX();
float finalY = event.getY();
Log.d(TAG, "Action was UP");
if (initialX < finalX) {
Log.d(TAG, "Left to Right swipe performed");
}
if (initialX > finalX) {
Log.d(TAG, "Right to Left swipe performed");
}
if (initialY < finalY) {
Log.d(TAG, "Up to Down swipe performed");
}
if (initialY > finalY) {
Log.d(TAG, "Down to Up swipe performed");
}
break;
case MotionEvent.ACTION_CANCEL:
Log.d(TAG,"Action was CANCEL");
break;
case MotionEvent.ACTION_OUTSIDE:
Log.d(TAG, "Movement occurred outside bounds of current screen element");
break;
}
return super.onTouchEvent(event);
}
【讨论】: