6

我需要使用空闲侦听器来侦听用户正在使用应用程序或在活动处于活动状态时处于空闲状态。当用户不使用应用程序超过十秒时,我需要做一些事情。我怎样才能使它成为可能?

4

1 回答 1

7

以下是如何完成此任务的想法:

首先,您需要一个 Runnable(),当您的超时(例如 10 秒)发生时,它将运行。下面是 Runnable():

private Runnable DoOnTimeOut = new Runnable() 
{
    public void run() 
    {
        // Do something Here
    }
}

现在,在您的活动中,您可以为 DoOnTimeOut 调用 postDelayed:

Handler hl_timeout = new Handler();

@Override
public void onCreate(Bundle b)
{
   hl_timeout.postDelayed(DoOnTimeOut, 10000); // The DoOnTimOut will be triggered after 10sec
}

现在,最重要的部分是当您看到用户交互时,您想取消对 DoOnTimeOut 的调用,然后再次将调用设置为接下来的 10 秒。这是您的用户交互活动的覆盖方法:

@Override
public void onUserInteraction()
{
    super.onUserInteraction();
    //Remove any previous callback
    hl_timeout.removeCallbacks(DoOnTimeOut);
    hl_timeout.postDelayed(DoOnTimeOut, 10000);
}

我希望它对你有帮助。

于 2011-12-02T07:32:08.940 回答