написание тайм-аута для Android - PullRequest
0 голосов
/ 01 сентября 2010

У меня есть небольшая проблема, которую я не могу понять. для моей программы я в основном хочу выполнить некоторый код, если пользователь ничего не делал с приложением в течение 5 минут (скажем, выйдите из системы).

как мне это сделать? Я теряюсь, обнаружив, что пользователь ничего не сделал, а затем сбрасываю счетчик, как только пользователь коснулся планшета или чего-то еще. кто-нибудь может дать мне несколько советов?

спасибо заранее!

1 Ответ

5 голосов
/ 01 сентября 2010

Итак, если у вас есть одно действие в вашем приложении, вы создаете 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, чтобы событие пришло в действие.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...