Автоматический выход через X минут, Android - PullRequest
7 голосов
/ 18 апреля 2011

Я ищу возможность реализовать функцию, которая выходит из системы пользователя после X минут бездействия. После прохождения аналогичного ответа на SO, предложенный метод, кажется, будет -

  • Таймер работает в фоновом режиме. Запланируйте время ожидания через x минут.
  • В каждой функции, где пользователь взаимодействует с приложением (в основном со всеми обработчиками событий), вызывайте метод, который сбрасывает таймер.

Я не могу придумать ничего лучше, чем это сам, но это кажется огромной болью даже для приложения среднего размера, которое имеет 6-7 различных экранов и целый набор компонентов пользовательского интерфейса. Есть ли лучший способ справиться с этим?

Спасибо,
Тея.

Ответы [ 4 ]

5 голосов
/ 28 мая 2012

Вы можете использовать CountDownTimer и перезапустить его с onUserInteraction() в каждом Activity()

2 голосов
/ 18 апреля 2011

Таймер работает в фоновом режиме. Запланируйте время ожидания через x минут.

Нет и да. Используйте таймер, если вы реализуете его в Service или в IntentService. В противном случае, не надо.

В каждой функции, где пользователь взаимодействует с приложением (в основном со всеми обработчиками событий), вызывайте метод, который сбрасывает таймер.

Это решение будет трудно поддерживать.

У вас должен быть IntentService (демонстрирующий статью здесь ), работающий в фоновом режиме, который может легко реализовать TimerTask или Handler и заставить исполняемый код внутри него запускать трансляцию вашей деятельности. В своей деятельности вы можете легко добавить BroadcastReciever, и в этом случае вы можете выйти из системы, если время истекло. Вы можете запустить службу, когда ваше приложение невидимо для пользователя.

2 голосов
/ 18 апреля 2011

Вот как бы я поступил так:

1) Создайте глобальную переменную для представления журнала времени

2) Во время вызова onStop для каждого действия обновите глобальную переменную с текущим временем.

3) Во время вызова onResume для каждого действия сравните текущее время с глобальной переменной времени, чтобы увидеть, сколько времени прошло

1 голос
/ 08 декабря 2015

Это то, что я хотел реализовать для себя. Вот "библиотека", которую я сделал: https://github.com/zoltanersek/android-timeout-activity

Использование:

public class TestActivity extends TimeoutActivity {

@Override protected void onTimeout() {
 // logout
}

@Override protected long getTimeoutInSeconds() {
  return 15 * 60; // 15 minutes
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...