1

我有一个屏幕,如果用户去那里什么都不做,屏幕应该在 15 秒后关闭,但是如果用户开始输入某些内容,那么现在必须增加等待时间才能关闭屏幕。

private static long V_Time = 1000 * 15;
Handler handlerUI = new Handler();
.
.
.
handlerUI.postDelayed(new Runnable() {
    @Override
    public void run() {
       finish();
    }
}, V_Time);

即使用户可能仍在尝试输入内容,我的这段代码也会在 15 秒后关闭屏幕。有什么建议么 ?

4

2 回答 2

1

首先,15 秒是一个非常短的时间跨度!还要考虑一条确认消息,以便用户在需要时仍然可以继续。

您可以使用 Activity 中的onUserInteraction():void方法在检测到的每个用户交互上重置计时器。

从 api

onUserInteraction() 每当按键、触摸或轨迹球事件被分派到活动时调用。

于 2013-05-15T08:37:59.393 回答
0

每次用户触摸屏幕时使用此示例并重置计时器:

Timer timer = new Timer();
long delay = 1000 * 15;

protected void onTouch() {
        try {

            if (timer != null)
            {
                timer.cancel();
                timer.purge();
            }

            timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {

                    ActDocumentDetails.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            finishActivity();
                        }
                    });
                }

            }, delay );

        } catch (Exception e) {

        }

    }
于 2013-05-15T08:36:37.687 回答