如果用户未触摸屏幕,则在超时后完成活动

时间:2014-07-28 08:52:54

标签: android android-activity

我有一个活动。我想要的只是如果用户没有触摸屏,在TIMEOUT之后,此活动将自动完成()。有人有什么想法吗?

4 个答案:

答案 0 :(得分:3)

CountDownTimer countDownTimer = new CountDownTimer(30000, 1000) {

        public void onTick(long millisUntilFinished) {
            //TODO: Do something every second
        }

        public void onFinish() {

            finish();
            //YourActivity.finish();  outside the actvitiy

        }
    }.start();

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            countDownTimer.cancel();
            countDownTimer.start();
        }
        return super.onTouchEvent(event);
    }

所以基本上你开始一个countDown计时器,而不是等待它完成。完成后,请在活动上致电完成。 如果在用户触摸屏幕之间,则取消定时器并再次启动它。

别忘了接受答案:)

答案 1 :(得分:0)

了解如何在Android中等待/休眠,例如:

wait for 3 seconds or user click

Wait a time - Android

How to "wait" a Thread in Android

当等待/睡眠结束时,只需调用finish()方法。

答案 2 :(得分:0)

在您的活动中尝试此操作:

new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     }

     public void onFinish() {

         finish();
         //YourActivity.finish();  outside the actvitiy


     }
  }.start();

http://developer.android.com/reference/android/os/CountDownTimer.html

答案 3 :(得分:-1)

使用它:

int time =0;

然后为您的根布局添加onTouchListener并更新时间值,如下所示:

time = 0;

并使用处理程序计数如下:

final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
    @Override
    public void run() {
    time++;
    if(time>=10000){
            finish();
     }  
    }
    }, 1000);
很明显,我将完成时间设定为10秒。