寻找更通用的onUserInteraction()事件 - 而不仅仅是在一个Activity中

Roy*_*ley 10 events android

我需要能够知道用户何时没有与平板电脑/手机交互一段时间.我目前正试图通过以下方式获得这种情报:

@Override
public void onUserInteraction(){ 
    lastInteraction = System.currentTimeMillis();
}
Run Code Online (Sandbox Code Playgroud)

但是,它仅在Activity(或所述Activity中的片段)的直接交互中触发,而不是任何显示的对话框.有没有更普遍的方法来实现这一点,而不是将其添加到每个对话框?

文档

use*_*031 2

我通过将对话框包装到自定义布局中解决了这个问题:

public class InteractionInterceptorLayer extends LinearLayout {

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {

        //any actions here...

        return super.dispatchTouchEvent(ev);
    }

    //constructors...
}
Run Code Online (Sandbox Code Playgroud)

在布局定义中:

<com.package.InteractionInterceptorLayer xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    // layout goes here

</com.package.InteractionInterceptorLayer>
Run Code Online (Sandbox Code Playgroud)