Программа активности для Android

Обновлено: 24.11.2024

Для управления ограниченными системными ресурсами система Android может завершать работающие приложения. Каждое приложение запускается в новом процессе с уникальным идентификатором под уникальным пользователем. Если системе Android необходимо освободить ресурсы, она следует простому набору правил.

Если системе Android необходимо завершить процессы, она следует следующей системе приоритетов.

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

Пользователь не взаимодействует с активностью, но активность по-прежнему (частично) видна или в приложении есть служба, которая используется неактивной, но видимой активностью.

Приложение с работающей службой, которая не соответствует критериям 1 или 2.

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

Приложение без активных компонентов.

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

1.2. Приложение

Вы можете указать собственный класс приложения в файле манифеста Android.

Объект приложения уже является первым запущенным компонентом. Это также всегда последний компонент приложения, который завершается.

Этот объект предоставляет следующие основные методы жизненного цикла:

onCreate() — вызывается перед запуском первых компонентов приложения

onLowMemory() — вызывается, когда система Android запрашивает, чтобы приложение очистило память

onTrimMemory() — вызывается, когда система Android запрашивает у приложения очистку памяти. Это сообщение включает в себя индикатор, в котором находится приложение. Например, константа TRIM_MEMORY_MODERATE указывает, что процесс находится примерно в середине фонового списка LRU; освобождение памяти может помочь системе сохранить другие процессы, работающие позже в списке, для повышения общей производительности.

onTerminate() - только для тестирования, в продакшене не вызывается

onConfigurationChanged() — вызывается при каждом изменении конфигурации

После доступа поставщик контента никогда не останавливается по отдельности. Он останавливается один раз, если определен весь процесс приложения.

Класс активности — одна из очень важных частей компонента Android. Любое приложение, неважно, насколько оно маленькое (с точки зрения кода и масштабируемости), имеет как минимум один класс Activity. В отличие от большинства языков программирования, в которых метод main() является точкой входа для запуска этой программы или приложения, операционная система Android инициирует код в экземпляре Activity, вызывая определенные методы обратного вызова, которые соответствуют определенным этапам выполнения. его жизненный цикл. Таким образом, можно сказать, что активность — это точка входа для взаимодействия с пользователем. Каждое действие содержит макет, который имеет пользовательский интерфейс для взаимодействия с пользователем. Поскольку мы знаем, что каждое действие содержит связанный с ним макет, можно сказать, что класс действия является шлюзом, через который пользователь может программно взаимодействовать с пользовательским интерфейсом. Макет для конкретного действия задается с помощью setContentView(). setContentView() — это функция, которая принимает View в качестве параметра. Параметр представления в основном содержит файл макета для этого действия. Следующие изображения показывают, что activity_main — это файл макета MainActivity.

В случае Java:

В случае с Котлином:

  1. при создании()
  2. приостановить()

1. Метод onCreate()

Синтаксис:

protected void onCreate(Bundle saveInstanceState)

  • Метод onCreate(Bundle) — это место, где пользователь инициализирует действие. Этот метод вызывается при запуске активности. Это метод, который используется для инициализации большинства вещей в приложении для Android. Метод onCreate() принимает в качестве параметра saveInstanceState, который объект типа Bundle, т.е.e Bundle Object, который содержит ранее сохраненные данные действия. Если действие создано заново, пакет не будет сохранять никаких данных действия и будет содержать нулевое значение.
  • Метод onCreate() вызывает метод setContentView(), чтобы установить представление, соответствующее действию. По умолчанию в любом приложении для Android setContentView указывает на файл activity_main.xml, который является файлом макета, соответствующим MainActivity. Метод onCreate использует метод findViewById(), чтобы пользователь мог программно взаимодействовать с виджетами в Android, а затем настраивать их в соответствии с потребностями.

Bundle: если действие повторно инициализируется или перезапускается после того, как оно было ранее закрыто, то этот Bundle содержит данные, которые были последними переданными в onSaveInstanceState(Bundle). onSaveInstanceState() — это метод, который вызывается для сохранения данных непосредственно перед уничтожением нашей активности.

2. Метод onPause()

Синтаксис:

protected void onPause()

Этот метод вызывается как часть жизненного цикла действия, когда пользователь больше не взаимодействует с ним активно, но оно все еще отображается на экране. Предположим, что пользователь одновременно запускает два приложения на мобильном телефоне, т. е. когда действие B запускается перед действием A, поэтому действие A перейдет в состояние onPause(), а действие B перейдет в состояние onStart() жизненный цикл деятельности. Один важный момент, который следует помнить, заключается в том, что для доступа к любой активности системой, т. е. здесь Android, эта активность должна быть объявлена ​​в файле манифеста. Файл манифеста представляет собой XML-файл, включенный в приложение и по умолчанию известный как AndroidManifest.xml.

Объявление активности в файле манифеста

Откройте папку приложения, затем откройте манифест вложенной папки, а затем откройте файл AndroidManifest.xml.

Предположим, читатель хочет иметь еще одно действие, помимо MainActivity, которое включено в проект по умолчанию. Прежде чем добавить еще одно действие и не делать никаких изменений, давайте посмотрим, как выглядит файл AndroidManifest.xml:

Теперь добавим еще одно действие с именем SecondActivity и посмотрим, как объявить его в файле манифеста. Нужно написать код объявления внутри тега приложения, иначе объявление выдаст ошибку, и система не обнаружит SecondActivity. Код декларации приведен ниже.

Таким образом, можно сделать вывод, что приложение может иметь одно или несколько действий без каких-либо ограничений. Каждое действие, которое использует приложение для Android, должно быть объявлено в файле AndroidManifest.xml. и основное действие для приложения должно быть объявлено в манифесте с помощью , которое включает действие MAIN и LAUNCHER. Любое действие, будь то MainActivity или любое другое действие, должно быть объявлено в файле AndroidManifest. Если пользователь забудет объявить какое-либо действие, Android не сможет обнаружить это действие в приложении. Если для основного действия не указано ОСНОВНОЕ действие или категория ЗАПУСКА, значок приложения не будет отображаться в списке приложений на главном экране.

Добавление разрешений для приложения

Следует помнить, что любой сервис, который разработчик хочет использовать в приложении для Android, например интернет-сервис, сервис Bluetooth, карты Google, сервис уведомлений приложений и т. д., должен получить разрешение на использование любого из этих сервисов. системы андроид. Все эти разрешения или запросы должны быть объявлены в файле манифеста. Откройте файл AndroidManifest.xml с помощью процедуры, показанной выше. Допустим, пользователю нужно добавить разрешение на доступ в Интернет, доступ к которому должен получить приложение. Добавьте указанное ниже разрешение на доступ в Интернет в тег манифеста.

Допустим, нужно добавить разрешение Bluetooth в приложение, тогда оно должно быть объявлено следующим образом:

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

Он предоставляет подробную информацию о вызове методов действия жизненного цикла. В этом примере мы отображаем содержимое в logcat.

Вывод:

Вы не увидите никакого вывода на эмуляторе или устройстве. Вам нужно открыть logcat.

Теперь посмотрите на logcat: вызываются методы onCreate, onStart и onResume.

Теперь нажмите кнопку HOME. Вы увидите, что вызывается метод onPause.

Через некоторое время вы увидите, что вызывается метод onStop.

Теперь посмотрим на эмулятор. Это на доме. Теперь нажмите центральную кнопку, чтобы снова запустить приложение.

Теперь нажмите на значок жизненного цикла.

Теперь посмотрите на logcat: вызываются методы onRestart, onStart и onResume.

Если вы видите эмулятор, приложение запущено снова.

Теперь нажмите кнопку "Назад". Теперь вы увидите, что методы onPause вызываются.

Через некоторое время вы увидите, что вызываются методы onStop и onDestroy.

Методы onCreate() и onDestroy() вызываются только один раз в течение жизненного цикла действия.

Для просмотра видео присоединяйтесь к нашему каналу Youtube: присоединяйтесь сейчас

Отзыв

Помогите другим, поделитесь

Изучите последние руководства

Шаблоны проектирования Python

Подготовка

Тенденционные технологии

B.Tech / MCA

Службы Javatpoint

JavaTpoint предлагает слишком много высококачественных услуг. Напишите нам на [email protected], чтобы получить больше информации о предоставляемых услугах.

  • Дизайн веб-сайта
  • Разработка веб-сайта
  • Разработка Java
  • Разработка PHP
  • Вордпресс
  • Графический дизайн
  • Логотип
  • Цифровой маркетинг
  • Поисковая оптимизация на странице и за ее пределами
  • Контекстная реклама
  • Разработка контента
  • Корпоративное обучение
  • Обучение в классе и онлайн
  • Ввод данных

Подготовка к университетскому городку

В этом уроке мы познакомимся с одним из самых важных понятий, связанных с разработкой для Android, — с активностью.

Что такое действие в Android?

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

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

В случае Android → Views, Layouts и ViewGroups используются для разработки пользовательского интерфейса, который является физическим внешним видом нашего приложения. Но что такое ум, душа или сознание нашего приложения? Да, это действие.

Activity — это не что иное, как Java-класс в Android, который имеет некоторые предопределенные функции, которые запускаются в разных состояниях приложения, и которые мы можем переопределить, чтобы выполнить все, что захотим.

Класс Activity предоставляет нам пустые функции, позволяющие контролировать все.

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

Одна вещь, которая здесь отличается от нашего примера, заключается в том, что человек создается один раз при рождении и один раз уничтожается при смерти, а в промежутке между ними он контролируется разумом/душой/сознанием. Но действие отвечает за создание и уничтожение приложения бесконечное количество раз. Таким образом, помимо управления приложением, Activity также контролирует создание, уничтожение и другие состояния жизненного цикла приложения.

В Android может быть несколько действий, но может быть только одно основное действие. Например, в программировании на Java (или таких языках программирования, как C или C++) выполнение программы всегда начинается с метода main(). Точно так же, когда пользователь нажимает значок приложения, вызывается основная активность, и выполнение начинается с метода onCreate() класса Activity.

Различные состояния приложения (или основное действие приложения)

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

  1. Когда пользователь щелкает значок приложения, запускается основное действие, которое создает пользовательский интерфейс приложения с использованием XML-файлов макета. И приложение или действие запускается, и говорят, что оно находится в АКТИВНОМ состоянии.
  2. Когда на экране появляется какое-либо диалоговое окно, например, когда вы нажимаете кнопку "Выход" в некоторых приложениях, отображается окно, подтверждающее, хотите ли вы выйти или нет. В этот момент мы не можем взаимодействовать с пользовательским интерфейсом приложения, пока не разберемся с этим диалоговым окном/всплывающим окном. В такой ситуации говорят, что действие находится в состоянии PAUSED.
  3. Когда мы нажимаем кнопку "Домой" во время использования приложения, наше приложение не закрывается. Его просто сводят к минимуму. Это состояние приложения называется ОСТАНОВЛЕНО.
  4. Когда мы окончательно уничтожаем приложение, то есть полностью его закрываем, говорят, что оно находится в состоянии УНИЧТОЖЕНО.

Следовательно, всего существует четыре состояния действия (приложения) в Android, а именно: «Активно», «Приостановлено», «Остановлено» и «Уничтожено».

С точки зрения пользователя действие может быть либо видимым, либо частично видимым, либо невидимым в данный момент времени. Итак, что происходит, когда Activity имеет одну из следующих видимости? Мы узнаем об этом, сначала давайте подробно узнаем об этих состояниях.

Активное состояние

  • Когда действие находится в активном состоянии, это означает, что оно активно и выполняется.
  • Он виден пользователю, и пользователь может с ним взаимодействовать.
  • Среда выполнения Android рассматривает действие в этом состоянии с наивысшим приоритетом и никогда не пытается его уничтожить.

Приостановлено

  • Действие в этом состоянии означает, что пользователь все еще может видеть действие в фоновом режиме, например, за прозрачным окном или диалоговым окном, т. е. оно частично видно.
  • Пользователь не может взаимодействовать с действием, пока не завершит текущее представление.
  • Среда выполнения Android обычно не уничтожает действие в этом состоянии, но может сделать это в крайнем случае нехватки ресурсов.

Остановлено

  • Когда новое действие запускается поверх текущего или когда пользователь нажимает клавишу "Домой", действие переходит в состояние "Остановлено".
  • Активность в этом состоянии невидима, но не уничтожается.
  • Среда выполнения Android может остановить такое действие в случае нехватки ресурсов.

Разрушенное состояние

  • Когда пользователь нажимает клавишу "Назад" или среда выполнения Android решает освободить память, выделенную для действия, т. е. в состоянии паузы или остановки, оно переходит в состояние "Уничтожено".
  • Действие закончилось в памяти и невидимо для пользователя.

Примечание: Действие не может управлять своим состоянием. Он просто проходит через переходы состояний либо из-за взаимодействия с пользователем, либо из-за системных событий.

Методы жизненного цикла деятельности

Каждый раз, когда мы открываем приложение Google Maps, оно определяет наше местоположение с помощью GPS. И если GPS-трекер выключен, Android запросит у вас разрешение на его включение. Итак, как GPS-трекер или Android могут решить, нужен ли приложению GPS-трекер для работы или нет?

Да, очевидно, приложение при запуске запрашивает местоположение GPS, что возможно только в том случае, если GPS-трекер включен.

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

Точно так же мы можем указать приложению выполнить несколько действий, прежде чем выйти или быть уничтоженным.

  1. при создании()
  2. начало()
  3. по возобновлению()
  4. приостановить()
  5. по остановке()
  6. приуничтожении()

Всякий раз, когда начинается выполнение Activity, первым выполняется метод onCreate() . Этот метод выполняется только один раз за всю жизнь. Если у нас есть какие-либо переменные экземпляра в Activity, инициализация этих переменных может быть выполнена в этом методе. После метода onCreate() выполняется метод onStart().

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

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

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

В активном состоянии, если мы нажмем клавишу «Домой», действие перейдет в фоновый режим, а главный экран устройства станет видимым. Во время этого события Activity переходит в остановленное состояние. Выполняются оба метода onPause() и onStop().

Когда действие уничтожается пользователем или системой Android, вызывается функция onDestroy().

Когда действие возвращается в фокус из состояния паузы, вызывается onResume().

Когда мы повторно открываем любое приложение (после нажатия клавиши «Домой»), действие теперь переходит из состояния остановки в активное состояние. Таким образом, вызываются методы onStart() и onResume().

Чтобы уничтожить действие на экране, мы можем нажать клавишу "Назад". Это переводит активность в разрушенное состояние. Во время этого события вызываются методы onPause() , onStop() и onDestroy().

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

Читайте также: