Страницы

Поиск по вопросам

среда, 18 декабря 2019 г.

Какие методы, прописанные/указанные в приложении, вызывает непосредственно Система, а не приложение?

#android


Отметил в процессе чтения некоторой литературы для себя один тонкий нюанс о вызовах
методов в Android-приложении, а именно то, что методы жизненного цикла Activity вызывает
не приложение, которое мы реализуем и в которое их помещаем. Вызывает Система в зависимости
от действий Пользователя или ситуации в Системе. Система оповещает этими методами приложение
об изменении состояния. То есть, мы указываем в этих методах, что делать приложению,
когда Система будет это приложение оповещать, в данном случае, о событиях изменения
жизненного цикла.

Почему то раньше я не обращал на это внимание. 

Интересно следующее. Какие еще методы, кроме методов жизненного цикла, прописанные/указанные
в приложении вызывает непосредственно Система, а не приложение? Корректно ли вообще
задавать такой вопрос?
    


Ответы

Ответ 1



В общем то все, что помечается @override и это идет не из наследников вашего класса относится к системе. Конкретно по активити вы можете установить курсор на класс активити и нажать CTRL + O (override metods .., так же в основном меню: Code -> Override Metods) и посмотреть, какие методы можно переопределить. В основном системный отклик - это колбэки, (как жизненного цикла), узнать колбэк можно по начальному on- в названии, как onCreate(). Некоторые из колбэков, вызываемых системой (колбэки жизненного цикла не включены сюда): onConfigurationChanged() - изменение в конфигурации (смена языка, ориентации, подключение устройств и тп.) onBackPressed() - нажатие системной кнопки "назад" onSaveInstanceState()/onRestoreInstanceState() - запись/восcтановление состояния onTouchEvent() - касания экрана onRequestPermissionsResult() - результат запроса разрешений onLowMemory() - недостаточно памяти

Ответ 2



То, что вы называете системой, это по сути контейнер, в котором разворачивается какое-либо приложение. Контейнер получает запросы извне и создаёт по мере необходимости определённые объекты приложения. Т.е. не мы определяем момент создания объектов нашего приложения, а возможно даже и очерёдность их создания, а контейнер сам решает, какие объекты создавать и каков их жизненный цикл. Помимо вашего приложения у этого контейнера может быть ещё множество других приложений и, конечно, большое разнообразие системных переменных и объектов, о которых вообще можно не знать разработчику. Задача разработчика приложения - написать такое приложение, которое будет соответствовать требованиям данного контейнера. А задача разработчиков контейнера - создать контейнер, который реализует все необходимые интерфейсы, которые могут понадобиться запускаемым в нём приложениям.

Комментариев нет:

Отправить комментарий