Автоотключение через X минут, Android

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

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

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

Благодаря,
Тея.

    У вас есть таймер, работающий в фоновом режиме. Запланируйте его до таймаута через x минут.

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

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

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

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

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

    Вот как я бы это сделал:

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

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

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

    Это то, что я хотел реализовать для себя. Вот «библиотека», которую я сделал: 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 } } 
    Intereting Posts
    Проект внедрения Android Studio Eclipse Как проверить Если я сейчас на главном экране ScrollView vs RecyclerView для разных детей на Android Android (3.0) Action Bar не хочет идти Как использовать signalr в Android Как обрабатывать повторяющиеся строки в Android, чтобы уменьшить использование памяти? Java.lang.NoClassDefFoundError: Сбой разрешения: Lorg / jacoco / agent / rt / internal_14f7ee5 / Offline Ошибка синтаксического анализа C: \ Documents and Settings \ <user> \. Android \ devices.xml Подсчитайте количество таблиц в базе данных sqlite Проблемы с совместным текстом и изображением с SHARE INTENT на Twitter Что я должен установить для compileSdkVersion, minSdkVersion и targetSdkVersion? Библиотека Android Glide не работает с переходами общих элементов Android InApp Billing: запрашиваемый вами товар недоступен для покупки. Несогласованность в разных учетных записях google Разница между support.v7.widgets и панель инструментов android.widgets, фрагмент Обработка экрана без потери данных – Android