6

アイドルリスナーを使用して、ユーザーがアプリケーションを使用していることをリッスンするか、アクティビティがアクティブなときにアイドル状態にする必要があります。ユーザーがアプリケーションを 10 秒以上使用していないときに何かをする必要があります。どうすれば可能になりますか?

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 に答える