私は自分のアプリの1つでこれを行いました:
すべてのアクティビティが拡張されるベース アクティビティが必要です。このベース アクティビティで、「最後のユーザー アクティビティ」のタイムスタンプを追跡する変数を追加します。私の場合、ユーザー アクティビティとは単に画面に触れたことを意味します。したがって、dispatchTouchEvent(MotionEvent ev) メソッドをオーバーライドし、「最後のユーザー アクティビティ」を現在のタイムスタンプに設定します。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
lastActivity = new Date().getTime();
return super.dispatchTouchEvent(ev);
}
次に、この基本アクティビティの onResume() メソッドで、現在のタイムスタンプを「最後のユーザー アクティビティ」のタイムスタンプと比較します。1 分、5 分、または 15 分 (ユーザーが設定可能) を超える場合は、別のアクティビティを起動して、ユーザーにログインを要求します。
@Override
public void onResume() {
long now = new Date().getTime();
if (now - lastActivity > xxxx) {
// startActivity and force logon
}
}