Приостановка и возобновление активности в Android SDK

Этот урок научит вас

  1. Останавливать активность
  2. Восстанавливать активность

Полезно знать

  • Виды активности

При обычной работе приложения в Android SDK, активность иногда препятствует другим визуальным компонентам, которые вызывают остановки. Например, когда открывается активность прозрачности (скажем, в стиле диалога), предыдущая активность приостанавливается. Пока активность Android SDK видна, но в данный момент не в фокусе, она стоит на паузе.

Однако, как только деятельность полностью ограничивается и скрывается, она останавливается (см. обсуждение в следующем уроке).

Как деятельность приостановливается, система вызывает метод onPause() для Activity, что позволяет остановить текущие действия, которые не должны продолжаться во время паузы (например, видео) или сохранять информацию, которая должна быть постоянно сохранена только в случае, если пользователь покинет приложение. Если пользователь возвращается к активности из состояния паузы, система возобновляет ее, используя метод onResume().

Примечание: Когда активность получает вызов onPause(), это может быть признаком того, что деятельность будет приостановлена ??на мгновение, и пользователь может вернуть фокус на деятельность. Однако это первые признаки того, что пользователь покидает активность.

Рисунок 1. Когда полупрозрачная деятельность затемняет вашу деятельность, система вызывает onPause(), и активность ждет в приостановленном состоянии (1). Если пользователь возвращается к деятельности во время паузы, система вызывает onResume() (2).

Присостановка вашей активности

Когда система вызывает onPause() для вашей деятельности, это означает, что ваша активность все еще ??частично видна, но чаще всего является признаком того, что пользователь покидает деятельность и это в скором времени вступит в рабочее состояние. Вы должны использовать onPause() для обратного вызова:

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

Например, если ваше приложение использует Camera, метод onPause() является хорошим местом, чтобы освободить его.

@Override
public void onPause() {
    super.onPause();  // Always call the superclass method first

    // Release the Camera because we don't need it when paused
    // and other activities might need to use it.
    if (mCamera != null) {
        mCamera.release()
        mCamera = null;
    }
}

Как правило, не нужно использовать onPause () для хранения пользовательских изменений (например, личная информация, введенная в форму) в постоянном хранилище. Единственный случай, когда вы должны сохранять пользовательские изменения для постоянного хранения в onPause (), - это когда вы уверены, что пользователи ожидают изменений, которые будут автоматически сохранены (например, электронная почта). Тем не менее, вы должны избегать выполнения ресурсоемкой работы в течение onPause () , такой как запись в базе данных, поскольку это может замедлить видимый переход к следующему действию (вместо него вы должны выполнять тяжелую нагрузку во время операции отключения onStop ().

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

Примечание: Если ваша деятельность приостановлена, Activity постоянно находится в памяти и уведомляет, когда активность возобновится. Вам не нужно повторно инициализировать компоненты, которые были созданы во время обратного вызова.

Возобновление активности

Когда пользователь возобновляет приостановленную деятельность , система вызывает метод onResume ().

Имейте в виду, что система вызывает этот метод каждый раз, когда ваша деятельность выходит на первый план, в том числе при ее создании в первый раз. Таким образом, вы должны осуществлять onResume () для инициализации компонентов во время OnPause () и выполнять другие инициализации.

Следующий пример onResume () является аналогом onPause () (см. пример выше), поэтому он инициализирует камеру, которая высвобождается, когда деятельность приостанавливается.

@Override
public void onResume() {
    super.onResume();  // Always call the superclass method first

    // Get the Camera instance as the activity achieves full user focus
    if (mCamera == null) {
        initializeCamera(); // Local method to handle camera init
    }
}
поищите нужную Вам информацию на сайте Киевлифт.ком.юа