为android写一个超时事件

时间:2010-09-01 05:11:28

标签: java android

我有一个小问题,我无法弄清楚。 对于我的程序,我基本上想要执行一些代码,如果用户没有对应用程序做任何事情5分钟(说退出)。

我该怎么做呢?我在检测到用户什么都没做的时候迷路了,然后在用户触摸平板电脑之后重置计数。有人可以给我一些指示吗?

提前感谢!

1 个答案:

答案 0 :(得分:5)

因此,如果您的应用程序中有单个Activity,那么您可以创建一个Timer和TimerTask来实现此目的。并且可以跟踪触摸和关键事件。因此,在您的活动中,您可以执行以下操作。

Timer longTimer;
synchronized void setupLongTimeout(long timeout) {
  if(longTimer != null) {
    longTimer.cancel();
    longTimer = null;
  }
  if(longTimer == null) {
    Timer longTimer = new Timer();
    longTimer.schedule(new TimerTask() {
      public void run() {
        longTimer.cancel();
        longTimer = null;
        //do your stuff, i.e. finishing activity etc.
      }
    }, 300000 /*delay in milliseconds i.e. 5 min = 300000 ms or use timeout argument*/);
  }
}
@override
public boolean onTouchEvent(MotionEvent me) {
  setupLongTimeout(300000);
  return super.onTouchEvent(me);
}
@override
public boolean onKeyUp(int keyCode, KeyEvent ke) {
  setupLongTimeout(300000);
  return super.onKeyUp(keyCode, ke);
}
如果您正在处理任何视图的任何键/触摸事件,那么您需要返回false,以便活动来到活动。